sql - 如何确保不在 SQL Server 2005 中插入非空重复值

标签 sql sql-server database sql-server-2005

我在 SQL Server 2005 中有一个历史数据库,用于存档来自实时数据库的数据。我需要在历史数据库中添加一个名为 RowID INT 的列。此列不能作为标识,因为它需要存储来自实时数据库的值。

注意:在实时数据库中,RowID 是标识列。此列也是我最近在实时数据库中添加的。

我需要确保在历史数据库中,插入到该列中的非空值是唯一的。我知道在 SQL Server 中,我们不能使可为空的列唯一。

那么,在 SQL Server 2005 中,确保将 非 null 重复值 插入到 RowID 列中会引发错误的最有效方法是什么?

最佳答案

是时候升级到更新版本的 SQL Server 了。 Microsoft 将在 2016 年 4 月停止支持(请参阅 here)。

从 SQL Server 2008 开始,您可以使用过滤的唯一索引轻松地做您想做的事:

create unique index unq_history_rowid on history(rowid) where col is not null;

关于sql - 如何确保不在 SQL Server 2005 中插入非空重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34661354/

相关文章:

java - Netbeans 登录表单

php - CakePHP 递归实现漂亮的路由 - 类别、主题、部分、小节等

c# - 在 Nhibernate QueryOver 中使用计算属性(未映射)

java.sql.SQLSyntaxErrorException : ORA-00947: not enough values

sql - 在脚本中使用 T-SQL 'Two Digit Year Cutoff'

java - NetBeans Hibernate 逆向工程数据类型不匹配

sql-server - "There is insufficient system memory in resource pool ' 执行存储过程时默认' to run this query"

sql-server - 在SQL Server的哪里找到自定义错误消息?

mysql - 用值填充 LEFT JOIN 中的 NULL

sql - 过滤 WHERE 子句中的 OUTER APPLY 列