UPSERT INTO
Сохраняет данные в таблицу по PRIMARY_KEY
с перезаписью строк. Если указанный PRIMARY_KEY
отсутствует, в таблицу будет добавлена новая строка. Если задан существующий PRIMARY_KEY
, строка будет перезаписана. При этом значения столбцов, не участвующих в операции, не меняются.
Примечание
В отличие от INSERT INTO
и UPDATE
, запросы UPSERT INTO
и REPLACE INTO
не требуют предварительного чтения данных, поэтому выполняются быстрее.
UPSERT INTO
позволяет выполнять следующие операции:
-
Сохранение константных значений с помощью
VALUES
. Дописывает строки в конец таблицы или заменяет существующие.Пример
UPSERT INTO my_table (Key1, Key2, Value2) VALUES (1u, "One", 101), (2u, "Two", 102); COMMIT;
-
Сохранение результатов выборки
SELECT
. Копирует строки из другой таблицы.Пример
UPSERT INTO my_table SELECT Key AS Key1, "Empty" AS Key2, Value AS Value1 FROM my_table1; COMMIT;