У меня есть требование вставить строку в таблицу, если строка еще не существует, и мне нужно сделать это с помощью хранимой процедуры. Поэтому мне нужно выбрать, чтобы проверить, если строка уже существует, а затем вставить. Чего я хочу избежать, так это состояния гонки, при котором 2 вызывающих абонента хранимой процедуры могут увидеть, что строка не существует, а затем оба пытаются вставить строку.
Мои первые мысли по поводу решения этой проблемы состоят в блокировке таблицы, но, к сожалению, вы не можете выдать LOCK TABLE
в хранимой процедуре.
Я хочу избежать перехвата исключения клиента при вставке дубликата ключа (C #).
Есть ли способ блокировки стола или альтернативные решения?