2016-11-16 3 views
0

Ich möchte nur in meine Files-Favorites Tabelle einfügen, wenn die Werte, die ich versuche zu übergeben, nicht bereits dort ist.SQL Server: INSERT mit einer Bedingung

Ich habe versucht:

INSERT INTO [Files-Favorites](fileID,auditorID) 
    VALUES ('1', '34') 
     WHERE (fileID != '1' 
     AND auditorID != '34') 

Dies funktioniert nicht. Ich versuche nicht INSERT doppelte Werte. Wie ziehe ich das ab? Dies ist für einen Microsoft SQL Server 2005.

Danke

Antwort

5

Versuchen Sie nicht verwenden, wenn

IF NOT EXISTS(SELECT * FROM [Files-Favorites] WHERE fileID = '1' AND auditorID = '34') 
BEGIN 
    INSERT INTO [Files-Favorites](fileID, auditorID) 
    VALUES('1', '34') 
END 
2

existiert würde ich eher einen Verbund (mehrspaltigen) Schlüssel verwendet als auf jeden Einsatz Überprüfung

ALTER TABLE [Files-Favorites] ADD CONSTRAINT unique_1 UNIQUE(fileID,auditorID) 
+0

Dies ist weit über mich hinaus, nicht sicher, was Sie hier meinen – Damien

+0

Sie können einzigartige Einschränkung hinzufügen, um doppelte Daten zu verhindern. Es ist nicht ratsam, jeden Einsatz zu überprüfen. – sumit

0

Wir VORHANDEN mit Sub-Abfrage verwenden, können die Daten Existenz überprüfen und entsprechend einfügen:

INSERT INTO [Files-Favorites](fileID,auditorID) 
SELECT fileID, auditorID FROM (
SELECT '1' fileID,'34' auditorID) t 
WHERE NOT EXISTS(SELECT tm.fileID FROM [Files-Favorites] tm 
       WHERE tm.fileID = t.fileID AND tm.auditorID = t.auditorID)