避免重复记录的良好做法
本文关键字:记录 | 更新日期: 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。