2016-11-16 153 views
0

只有當我試圖傳遞的值不在那裏時,我纔想插入到我的Files-Favorites表中。SQL Server:插入條件

我想:

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

這是行不通的。我試圖不要INSERT重複的值。我該如何解決這個問題?這是一個Microsoft SQL Server 2005

謝謝

回答

5

嘗試使用如果不存在

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

我會用一個複合(多列)鍵,而不是在每個插入

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

這是超出我的方式,不知道你在這裏的意思 – Damien

+0

你可以添加獨特的約束來防止重複的數據。檢查每個插頁是不好的做法。 – sumit

0

我們可以使用帶有子查詢存在,檢查是否存在的數據,並相應地插入:

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)