防止SQL Server数据库中出现重复记录的最佳方法是什么?使用触发器?使用唯一约束?
发布于 2015-05-05 18:30:55
对表中的一列或多列使用唯一约束。示例:
CREATE TABLE Persons
(
P_Id int NOT NULL UNIQUE,
LastName varchar(255) NOT NULL UNIQUE,
FirstName varchar(255) NOT NULL UNIQUE,
Address varchar(255),
City varchar(255)
)更改现有表,如下所示
ALTER TABLE Persons
ADD CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)如果您使用前端应用程序来填充数据库中的表。在数据库上执行应用程序中的验证select查询,以在插入到数据库之前检查重复项。使用约束将通过抛出异常来防止重复。
注:以上示例为SQL SERVER、Oracle、ms access。
有关更深入的解决方案,请参阅How to prevent duplicate records being inserted with SqlBulkCopy when there is no primary key
发布于 2015-05-05 19:49:54
如果您不希望从unique约束抛出错误,并且还希望数据库接收重复数据但不插入任何内容。您可以查看merge语句
https://technet.microsoft.com/en-us/library/bb522522%28v=sql.105%29.aspx?f=255&MSPPError=-2147217396
https://stackoverflow.com/questions/30050482
复制相似问题