插入以忽略不是主键的重复项

时间:2012-03-09 17:11:07

标签: sql insert

我正在尝试查找仅插入值的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。

2 个答案:

答案 0 :(得分:4)

您应该创建由三个字段(txtLastNametxtEmailtxtZip)组成的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' 
)