我已向名为Activity的表添加了一个称为Ordinal的新列。问题是我给了它一个UNIQUE约束,将其设置为允许NULL(尽管我最终不希望这样做。我只需要将其设置为使脚本更进一步),并且没有给它一个默认值。我现在正在运行RedGate SQL比较脚本,该脚本是通过将该表与没有该列的Activity表版本进行比较而生成的。但我收到以下错误:
CREATE UNIQUE INDEX语句终止,因为找到了对象名称'iwt.Activity'和索引名称'IX_Activity'的重复键。重复的键值为(1)。
因此,根据我的研究,它试图在Ordinal列上创建唯一的键约束,但是NULL不是唯一的。所以我的下一步是给它唯一的值1,以使脚本通过。但是1也不是唯一的。所以,最后,我的问题:
最好在SQL Server Management Studio中,如何将列设置为具有unique默认值?这不是我创建此约束所需要的吗?
谢谢。
尝试一下:创建列时,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)