Допустим, у меня есть таблица, и я хочу вставить строку. Ключ новой строки может уже совпадать с ключом существующей строки в таблице, и в этом случае я хочу обновить существующую строку. Или он может не существовать в таблице, в этом случае новую строку нужно вставить.
Каков наиболее эффективный способ выполнения такой операции? Я думал сначала выполнить SELECT
(возможно, с EXISTS
), чтобы проверить, присутствует ли определенный ключ, затем UPDATE
, если присутствует, и INSERT
, если нет. Вероятно, вам придется сохранить UPDLOCK
и HOLDLOCK
для этой комбинации операторов, чтобы избежать условий гонки. Это кажется чрезмерно сложным и неэффективным.
Мне интересно, есть ли более эффективный способ сделать это в SQL Server 2008R2.