SQL 服务器:有条件的 INSERT
SQL Server : INSERT with a condition
我想插入到我的 Files-Favorites
table 中,只有当我尝试传递的值不在其中时。
我试过了:
INSERT INTO [Files-Favorites](fileID,auditorID)
VALUES ('1', '34')
WHERE (fileID != '1'
AND auditorID != '34')
这行不通。我尽量不 INSERT
重复值。我该如何解决这个问题?这适用于 Microsoft SQL Server 2005。
谢谢
如果不存在请尝试使用
IF NOT EXISTS(SELECT * FROM [Files-Favorites] WHERE fileID = '1' AND auditorID = '34')
BEGIN
INSERT INTO [Files-Favorites](fileID, auditorID)
VALUES('1', '34')
END
我会使用复合(多列)键而不是检查每个插入
ALTER TABLE [Files-Favorites] ADD CONSTRAINT unique_1 UNIQUE(fileID,auditorID)
我们可以使用带有子查询的 EXISTS 来检查数据是否存在并相应地插入:
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)
我想插入到我的 Files-Favorites
table 中,只有当我尝试传递的值不在其中时。
我试过了:
INSERT INTO [Files-Favorites](fileID,auditorID)
VALUES ('1', '34')
WHERE (fileID != '1'
AND auditorID != '34')
这行不通。我尽量不 INSERT
重复值。我该如何解决这个问题?这适用于 Microsoft SQL Server 2005。
谢谢
如果不存在请尝试使用
IF NOT EXISTS(SELECT * FROM [Files-Favorites] WHERE fileID = '1' AND auditorID = '34')
BEGIN
INSERT INTO [Files-Favorites](fileID, auditorID)
VALUES('1', '34')
END
我会使用复合(多列)键而不是检查每个插入
ALTER TABLE [Files-Favorites] ADD CONSTRAINT unique_1 UNIQUE(fileID,auditorID)
我们可以使用带有子查询的 EXISTS 来检查数据是否存在并相应地插入:
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)