У меня есть хранимая процедура, которая будет ВСТАВЛЯТЬ запись в таблицу. Я создал уникальное ограничение ключа для таблицы, чтобы избежать дублирования записей.
Независимо от того, что определено уникальное ограничение ключа, я использую условие IF() (перед оператором INSERT) для проверки наличия повторяющейся записи, которая может уже существовать.
Однако условный оператор, который я использую для проверки дублирующейся записи, по-видимому, не влияет на то, выполняется ли INSERT. - т. е. когда повторяющаяся запись отправляется в sproc, возникает исключение «Нарушение ограничения UNIQUE KEY...».
Вот пример моего sproc:
BEGIN
if
(SELECT Count(f1)
FROM table
WHERE f1 = @f1
AND f2= @f2)
<= 0
BEGIN
INSERT INTO table
(f1,f2)
VALUES
(@f1, @f2)
RETURN @@IDENTITY
END
END
Что-то не так с моим синтаксисом? Или, может быть, я иду об этом неправильно?
scope_identity, если цель состоит в том, чтобы вернуть идентификатор самой последней вставленной строки. - person Martin Smith   schedule 02.10.2010