Вопросы с тегом «upsert»

По вопросам, связанным с выполнением операций upsert (комбинации обновления / вставки).

875
Вставить в таблицу MySQL или обновить, если существует

Я хочу добавить строку в таблицу базы данных, но если строка существует с тем же уникальным ключом, я хочу обновить строку. Например: insert into table (id, name, age) values(1, "A", 19) Допустим, уникальный ключ есть id, и в моей базе данных есть строка с id = 1. В этом случае я хочу обновить эту...

645
Вставить, при повторном обновлении в PostgreSQL?

Несколько месяцев назад я узнал из ответа на Stack Overflow, как выполнять несколько обновлений одновременно в MySQL, используя следующий синтаксис: INSERT INTO table (id, field, field2) VALUES (1, A, X), (2, B, Y), (3, C, Z) ON DUPLICATE KEY UPDATE field=VALUES(Col1), field2=VALUES(Col2); Я сейчас...

599
Решения для вставки или обновления на SQL Server

Предположим, что структура таблицы MyTable(KEY, datafield1, datafield2...). Часто я хочу либо обновить существующую запись, либо вставить новую запись, если она не существует. По существу: IF (key exists) run update command ELSE run insert command Какой лучший способ написать...

535
SQLite - UPSERT * не * ВСТАВИТЬ или ЗАМЕНИТЬ

http://en.wikipedia.org/wiki/Upsert Вставить обновление хранимой процедуры на SQL Server Есть ли какой-нибудь умный способ сделать это в SQLite, о котором я не думал? В основном я хочу обновить три из четырех столбцов, если запись существует, если она не существует, я хочу вставить запись со...

362
Postgres: INSERT, если еще не существует

Я использую Python для записи в базу данных postgres: sql_string = "INSERT INTO hundred (name,name_slug,status) VALUES (" sql_string += hundred + ", '" + hundred_slug + "', " + status + ");" cursor.execute(sql_string) Но поскольку некоторые из моих строк идентичны, я получаю следующую ошибку:...

293
Oracle: как сделать UPSERT (обновить или вставить в таблицу?)

Операция UPSERT обновляет или вставляет строку в таблицу, в зависимости от того, есть ли в таблице строка, соответствующая данным: if table t has a row exists that has key X: update t set mystuff... where mykey=X else insert into t mystuff... Поскольку у Oracle нет конкретного оператора UPSERT,...

268
Как сделать UPSERT (MERGE, INSERT ... ON DUPLICATE UPDATE) в PostgreSQL?

Очень часто задаваемый вопрос здесь - как сделать upsert, что вызывает MySQL INSERT ... ON DUPLICATE UPDATEи поддерживает стандарт как часть MERGEоперации. Учитывая, что PostgreSQL не поддерживает его напрямую (до pg 9.5), как вы это делаете? Учтите следующее: CREATE TABLE testtable ( id integer...

142
PostgreSQL INSERT ON CONFLICT UPDATE (upsert) использовать все исключенные значения

Когда вы добавляете строку (PostgreSQL> = 9.5) и хотите, чтобы возможный INSERT был точно таким же, как и возможное UPDATE, вы можете написать его так: INSERT INTO tablename (id, username, password, level, email) VALUES (1, 'John', 'qwerty', 5, 'john@mail.com') ON CONFLICT (id) DO UPDATE SET...

104
Вставить обновление хранимой процедуры на SQL Server

Я написал хранимую процедуру, которая будет выполнять обновление, если запись существует, иначе она выполнит вставку. Это выглядит примерно так: update myTable set Col1=@col1, Col2=@col2 where ID=@ID if @@rowcount = 0 insert into myTable (Col1, Col2) values (@col1, @col2) Моя логика написания его...

104
SQLite UPSERT / ОБНОВЛЕНИЕ ИЛИ ВСТАВКА

Мне нужно выполнить UPSERT / INSERT OR UPDATE для базы данных SQLite. Есть команда INSERT OR REPLACE, которая во многих случаях может быть полезной. Но если вы хотите сохранить свой идентификатор с автоинкрементом из-за внешних ключей, он не работает, поскольку он удаляет строку, создает новую и,...

98
SQLite INSERT - ПРИ ДВОЙНОМ ОБНОВЛЕНИИ КЛЮЧА (UPSERT)

В MySQL есть что-то вроде этого: INSERT INTO visits (ip, hits) VALUES ('127.0.0.1', 1) ON DUPLICATE KEY UPDATE hits = hits + 1; Насколько я знаю, этой функции в SQLite нет, я хочу знать, есть ли способ добиться того же эффекта без выполнения двух запросов. Также, если это невозможно, что вы...

95
Использовать несколько аргументов конфликт_целевых в предложении ON CONFLICT

У меня есть два столбца в таблице col1, col2они оба уникально проиндексированы (col1 уникален, а также col2). Мне нужно вставить в эту таблицу, использовать ON CONFLICTсинтаксис и обновить другие столбцы, но я не могу использовать оба столбца в conflict_targetпредложении. Оно работает: INSERT INTO...

84
Как мне ОБНОВИТЬ строку в таблице или ВСТАВИТЬ ее, если она не существует?

У меня есть следующая таблица счетчиков: CREATE TABLE cache ( key text PRIMARY KEY, generation int ); Я хотел бы увеличить один из счетчиков или установить его на ноль, если соответствующая строка еще не существует. Есть ли способ сделать это без проблем с параллелизмом в стандартном SQL? Операция...