Я хочу вставить данные в мою таблицу, но вставить только те данные, которых еще нет в моей базе данных.
Вот мой код:
ALTER PROCEDURE [dbo].[EmailsRecebidosInsert]
(@_DE nvarchar(50),
@_ASSUNTO nvarchar(50),
@_DATA nvarchar(30) )
AS
BEGIN
INSERT INTO EmailsRecebidos (De, Assunto, Data)
VALUES (@_DE, @_ASSUNTO, @_DATA)
WHERE NOT EXISTS ( SELECT * FROM EmailsRecebidos
WHERE De = @_DE
AND Assunto = @_ASSUNTO
AND Data = @_DATA);
END
И ошибка:
Сообщение 156, уровень 15, состояние 1, процедура EmailsRecebidosInsert, строка 11
Неверный синтаксис рядом с ключевым словом «ГДЕ».
insert
оператор - это всегда одна транзакция. Дело не в том, что SQL Server сначала оценивает подзапрос, а затем в какой-то более поздний момент и, не удерживая блокировку, продолжает выполнять вставку.