Обсуждение участника:BlackSpire/merge

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

В системах управления базами данных команда SQL MERGE используется для вставки в таблицу новых записей, либо обновления существующих в засимости от того соблюдено ли условие. Команда была официальна введена в стандарте SQL:2008 .

Использование

[править код]
MERGE INTO table_name USING table_name ON (condition)
  WHEN MATCHED THEN
  UPDATE SET column1 = value1 [, column2 = value2 ...]
  WHEN NOT MATCHED THEN
  INSERT (column1 [, column2 ...]) VALUES (value1 [, value2 ...

Другие нестандартные реализации

[править код]

Некоторые СУБД поддерживают схожую функциональность, используя свои собственные нестандартные SQL расширения MySQL, например поддерживает синтаксис INSERT ... ON DUPLICATE KEY UPDATE [1] использование которого приводит к похожим результатам. Так же поддерживается форма REPLACE INTO [2], which has a similar (although subtly different) effect.

SQLite's INSERT OR REPLACE INTO также работает схожим образом.

Firebird поддрживает как синтаксис MERGE INTO, так и однострочный вариант UPDATE OR INSERT INTO tablename (columns) VALUES (values) [MATCHING (columns)], однако второй вариант не позволяет выбрить различные действия в зависимости от того была ли проведена втавка или обновление (т.е. setting a new sequence value only for new rows, not for existing ones.)

  1. MySQL :: MySQL 5.1 Reference Manual :: 12.2.4.3 INSERT ... ON DUPLICATE KEY UPDATE Syntax
  2. MySQL 5.1 Reference Manual: 11.2.6 REPLACE Syntax
[править код]


Category:SQL keywords


cs:MERGE lv:Merge (SQL) ja:MERGE (SQL)