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