sql-server - 在没有唯一约束的情况下确保不重复

标签 sql-server sql-server-2008

是否可以在该列上不使用 UNIQUE 约束(不想深入了解避免这种情况的原因)来确保该列不包含重复值?我特别考虑了竞争条件。

为了简单起见,我们假设相关列的类型为 nvarchar(50) (该类型重要吗?)

最佳答案

可以通过插入之前的触发器、条件If Not Exists(...)来实现。但实际上UNIQUE CONSTRAINT是最快的。

另一个选项是在该列上创建唯一索引,这应该比触发器和条件更快。

如果您不想向现有表添加唯一约束,则可以使用此字段 nvarchar (50) 创建其他表并对其进行唯一约束。并在事务中插入主表之前(在插入语句或触发器中)插入此字段的值到这个新表中。

关于sql-server - 在没有唯一约束的情况下确保不重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31721276/

相关文章:

sql-server - 如何只保留日期时间值的时间部分(SQL Server)?

sql-server - 存储过程中 IN 运算符导致数据类型 nvarchar 转换为 bigint 时出错

sql-server-2008 - 如何在 SQL Server 中将变量中的全名拆分为名字和姓氏?

sql - 如何检查空表并终止存储过程

c# - SQL语句耗时长线程冲突如何解决?

mysql - 动态 SQL 查询用其他列中的值填充列

sql-server - Column不存在时编译

sql - 我可以用逗号将多行分隔为一列吗?

c# - Microsoft Sync Framework 2.1 与 C# 中的更改跟踪服务器和客户端数据库同步

c# - 使用 LinqToSql 生成返回数据库记录?