2016-11-16 100 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)