Quero inserir dados na minha tabela, mas inserir apenas dados que ainda não existem no meu banco de dados.
Aqui está o meu código:
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
E o erro é:
Mensagem 156, Nível 15, Estado 1, Procedimento EmailsRecebidosInsert, Linha 11
Sintaxe incorreta perto da palavra-chave 'WHERE'.
insert
declaração é sempre uma única transação. Não é como se o SQL Server avaliasse a subconsulta primeiro e depois, em algum momento posterior, e sem manter um bloqueio, continue fazendo a inserção.