我使用 SQL Server 2008,有一个类型为 varchar(X) 的列,我希望它的值是唯一的。
最好的方法是什么?应该使用唯一约束并捕获异常,还是在插入新值之前进行预检查?
但问题在于,该应用程序由许多用户使用,因此我认为预检查可能会导致竞争条件,如果两个用户插入相同的值。
谢谢
我使用 SQL Server 2008,有一个类型为 varchar(X) 的列,我希望它的值是唯一的。
最好的方法是什么?应该使用唯一约束并捕获异常,还是在插入新值之前进行预检查?
但问题在于,该应用程序由许多用户使用,因此我认为预检查可能会导致竞争条件,如果两个用户插入相同的值。
谢谢
竞态条件是需要注意的一个重点。
为什么不两者兼顾呢?预先检查可以向用户提供良好的反馈,但绝对要将唯一约束作为最终保障。
让数据库为您工作。创建唯一约束。
使用约束(UNIQUE或PRIMARY KEY)。这样,键可以在每个应用程序中得到执行。如果需要,您可以在存储过程中执行其他检查和处理 - 在插入之前或之后。