我正在尝试查找仅插入值的sql查询,但如果该值存在则不会执行此操作。现在我已经看到了很多例子,但它们都依赖于主键或表到表的移动。我只是想在表中添加一个新行,并假设其中一个列没有相同的值添加它。我知道下面的内容不会起作用但是我认为它会接近,如果我的写作还不够,可能会把它清理干净。
INSERT INTO table (txtLastName,txtEmail,txtZip)
Values ('Tester','test@test.com','12345')
WHERE txtLastName <> 'Tester'
or WHERE txtEmail <> 'test@test.com'
or WHERE txtZip <> '12345'
使用MS SQL Server。
答案 0 :(得分:4)
您应该创建由三个字段(txtLastName
,txtEmail
,txtZip
)组成的Unique Constraint
。
链接将您引导至SQL Server文档,但唯一约束的概念是RDBMS通用。
请注意,当您创建唯一约束时,您的重复插入不会无声地失败:它会抛出一个错误,说插入试图违反唯一约束。而且,当然,它应该这样做!确保您的代码处理该异常。
答案 1 :(得分:1)
试试这个:
INSERT INTO table (txtLastName,txtEmail,txtZip)
SELECT 'Tester','test@test.com','12345'
WHERE NOT EXISTS (SELECT *
FROM table
WHERE txtLastName = 'Tester'
AND txtEmail = 'test@test.com'
AND txtZip = '12345'
)