在SQL Server中使用NOT EXISTS避免重复插入

时间:2018-03-09 07:03:11

标签: vb.net vba sql-server-2008

我有以下代码,我目前正在构建以限制数据库中数据插入的重复。不幸的是,它遇到了一些错误。我搜索并尝试了几种组合,但不知何故,我无法正确使用它。

sSQL = "INSERT INTO tblTableMenu "
sSQL &= "(MenuID, MenuPosition) "
sSQL &= "VALUES ('" & sValue & "', " & i + 1 & ") "
sSQL &= "WHERE NOT EXISTS(SELECT 1 FROM tblTableSettings WHERE MenuID = '" & 
sValue & "')"

上面的代码是这样写的:

INSERT INTO tblTableMenu (MenuID, MenuPosition) 
VALUES ('SAMPLE', 1)  
WHERE NOT EXISTS(SELECT 1 FROM tblTableSettings WHERE MenuID = 'SAMPLE')

1 个答案:

答案 0 :(得分:1)

T-SQL中的INSERT命令 NOT 允许WHERE子句。您需要检查第一个,如果您确实想要插入,则只需触发INSERT

你需要做这样的事情:

IF NOT EXISTS(SELECT 1 FROM tblTableSettings WHERE MenuID = 'SAMPLE')
   INSERT INTO tblTableMenu (MenuID, MenuPosition) 
   VALUES ('SAMPLE', 1)  

但是,NOT EXISTS()检查tblTableSettings,而INSERT实际上违反tblTableMenu表格,这似乎很奇怪..... >故意,或只是疏忽?