SQL:使用默认的唯一值创建新列

问题描述 投票:3回答:1

我已向名为Activity的表添加了一个称为Ordinal的新列。问题是我给了它一个UNIQUE约束,将其设置为允许NULL(尽管我最终不希望这样做。我只需要将其设置为使脚本更进一步),并且没有给它一个默认值。我现在正在运行RedGate SQL比较脚本,该脚本是通过将该表与没有该列的Activity表版本进行比较而生成的。但我收到以下错误:

CREATE UNIQUE INDEX语句终止,因为找到了对象名称'iwt.Activity'和索引名称'IX_Activity'的重复键。重复的键值为(1)。

因此,根据我的研究,它试图在Ordinal列上创建唯一的键约束,但是NULL不是唯一的。所以我的下一步是给它唯一的值1,以使脚本通过。但是1也不是唯一的。所以,最后,我的问题:

最好在SQL Server Management Studio中,如何将列设置为具有unique默认值?这不是我创建此约束所需要的吗?

谢谢。

default-value ssms unique-constraint
1个回答
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)  
© www.soinside.com 2019 - 2024. All rights reserved.