Ich möchte Daten in meine Tabelle einfügen, aber nur Daten einfügen, die noch nicht in meiner Datenbank vorhanden sind.
Hier ist mein Code:
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
Und der Fehler ist:
Nachricht 156, Ebene 15, Status 1, Prozedur EmailsRecebidosInsert, Zeile 11
Falsche Syntax in der Nähe des Schlüsselworts 'WHERE'.
insert
Anweisung ist immer eine einzelne Transaktion. Es ist nicht so, dass der SQL Server die Unterabfrage zuerst auswertet und dann zu einem späteren Zeitpunkt und ohne eine Sperre zu halten, das Einfügen durchführt.