避免重复记录的良好做法

时间:2014-11-11 07:20:29

标签: c# sql-server-2008

我有一个用户可以添加更新和删除记录的应用程序,我想知道避免重复记录的最佳方法。在这个避免重复记录的应用程序中我在表上创建了一个索引,这是一个好习惯还是还有其他?

3 个答案:

答案 0 :(得分:2)

有几种方法可以做到这一点。如果您在字段上有唯一索引,并且尝试插入重复值SQL Server并抛出错误。我首选的方法是使用

测试插入前的存在
IF NOT EXISTS (SELECT ID FROM MyTable WHERE MyField = @ValueToBeInserted)
BEGIN
    INSERT INTO MyTable (Field1, Field2) Values (@Value1, @Value2)
END

您还可以返回一个值,让您知道INSERT是否使用上述代码中的ELSE进行了。

如果您选择索引字段,则可以将IGNORE_DUP_KEY设置为忽略任何重复的插入。如果要插入多行,则将忽略任何重复项,并且将继续插入非重复项。

答案 1 :(得分:1)

根据我的说法,桌子的id几乎是强制性的。为避免重复插入行,您只需使用:

INSERT IGNORE INTO Table(id, name) VALUES (null, "blah")

这适用于MySQL,我不确定SQL Server。

答案 2 :(得分:1)

您可以在不希望重复的列或列上使用UNIQUE constraints;另见http://www.w3schools.com/sql/sql_unique.asp

以下是单列和多列唯一约束的示例:

CREATE TABLE [Person]
(
    …
    [SSN] VARCHAR(…) UNIQUE,  -- only works for single-column UNIQUE constraint
    …
    [Name] NVARCHAR(…),
    [DateOfBirth] DATE,
    …
    UNIQUE ([Name], [DateOfBirth])  -- works for any number of columns
)