我在名为Activity的表中添加了一个名为Ordinal的新列。问题是我给了它一个UNIQUE约束,把它设置为允许NULL(尽管我最终不想要这个......我只需要将它设置为那个以使脚本更远一些),并且没有给它一个默认值。我现在正在运行RedGate SQL Compare脚本,该脚本是通过将此表与没有该列的Activity表的版本进行比较而生成的。但我收到以下错误:
CREATE UNIQUE INDEX语句终止,因为找到了对象名称“iwt.Activity”和索引名称“IX_Activity”的重复键。重复键值为(1)。
基于我的研究,它试图在Ordinal列上创建一个唯一的键约束,但NULL不是唯一的。所以我的下一步是给它一个唯一值1,只是为了让脚本通过。但是1也不会是唯一的。最后,我的问题是:
最好在SQL Server Management Studio中,如何将列设置为具有唯一默认值?这不是我需要创建这个约束吗?
感谢。
答案 0 :(得分:0)
尝试: 创建列时,NULL将是第一个约束。 UNIQUE将作为添加约束,您应该添加第二个约束。 他们可以毫无问题地按此订单运行(经过测试):
--first constraint
alter table Table_Name
add Column_Name int null
--second constraint
alter table Table_Name
add constraint Constraint_Name unique (Column_Name)
答案 1 :(得分:0)