避免重复记录的良好做法

本文关键字:记录 | 更新日期: 2023-09-27 18:29:54

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

避免重复记录的良好做法

有几种方法可以做到这一点。如果您在字段上有一个唯一的索引,并且您试图插入一个重复的值,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设置为忽略任何重复插入。如果插入多行,则会忽略任何重复项,并继续插入非重复项。

您可以对列或不希望重复的列集使用UNIQUE约束;另请参阅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
)

根据我的说法,表的id几乎是强制性的。为了在插入行时避免重复,您可以简单地使用:

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

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