Решения для вставки или обновления на SQL Server - PullRequest
539 голосов
/ 20 сентября 2008

Предположим, что структура таблицы MyTable(KEY, datafield1, datafield2...).

Часто я хочу либо обновить существующую запись, либо вставить новую запись, если она не существует.

По существу:

IF (key exists)
  run update command
ELSE
  run insert command

Какой самый лучший способ написать это?

Ответы [ 21 ]

0 голосов
/ 20 сентября 2008

Если вы используете ADO.NET, DataAdapter справится с этим.

Если вы хотите справиться с этим самостоятельно, вот путь:

Убедитесь, что в столбце ключей есть ограничение первичного ключа.

Тогда вы:

  1. сделать обновление
  2. Если обновление завершится неудачно, поскольку запись с ключом уже существует, выполните вставку. Если обновление не завершится неудачно, вы закончили.

Вы также можете сделать это наоборот, то есть сначала выполнить вставку и выполнить обновление, если вставка не удалась. Обычно первый способ лучше, потому что обновления выполняются чаще, чем вставки.

...