T-SQL Возможно ли выполнить Update / Insert с помощью одной быстрой операции

Допустим, у меня есть таблица, и я хочу вставить строку. Ключ новой строки может уже совпадать с ключом существующей строки в таблице, и в этом случае я хочу обновить существующую строку. Или он может не существовать в таблице, в этом случае новую строку нужно вставить.

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

Мне интересно, есть ли более эффективный способ сделать это в SQL Server 2008R2.

6
задан Michael Goldshteyn 24 November 2011 в 17:18
поделиться