Chcę wstawić dane do mojej tabeli, ale wstaw tylko te dane, które jeszcze nie istnieją w mojej bazie danych.
Oto mój kod:
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
Błąd to:
Msg 156, poziom 15, stan 1, e-maile z procedurami RecebidosInsert, wiersz 11
Niepoprawna składnia w pobliżu słowa kluczowego „GDZIE”.
insert
wyciąg jest zawsze pojedynczą transakcją. To nie tak, że SQL Server najpierw ocenia podkwerendę, a następnie w pewnym momencie i bez przytrzymywania blokady kontynuuje wstawianie.