我在SQL Server 2005
中有一个历史数据库,用于存档来自实时数据库的数据。我需要在名为RowID INT的历史数据库中添加一列。此列不能作为标识,因为它需要存储来自实时数据库的值。
注意:在实时数据库中,RowID是标识列。最近我也在实时数据库中添加了这个专栏。
我需要确保在历史数据库中,插入此列的非空值是唯一的。据我所知,在SQL Server中,我们不能将可为空的列设置为唯一。
因此,在SQL Server 2005中,确保将non-null duplicate values
插入RowID列的最有效方法是什么会引发错误?
答案 0 :(得分:2)
评论太长了。是时候升级到更新版本的SQL Server了。 Microsoft将于4月(2016年)停止提供支持(请参阅here)。
从SQL Server 2008开始,您可以通过过滤的唯一索引轻松地执行所需操作:
create unique index unq_history_rowid on history(rowid) where col is not null;
答案 1 :(得分:-1)
您可以将unique constraint用于RowId