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

时间:2011-08-22 13:40:11

标签: default-value ssms unique-constraint

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

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

基于我的研究,它试图在Ordinal列上创建一个唯一的键约束,但NULL不是唯一的。所以我的下一步是给它一个唯一值1,只是为了让脚本通过。但是1也不会是唯一的。最后,我的问题是:

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

感谢。

2 个答案:

答案 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)

在我的例子中:

PaymentGatewayHash 是

购物车是一个桌子

--first query
alter table Cart 
add PaymentGatewayHash NVARCHAR(20) null


--second query
CREATE UNIQUE INDEX PaymentGatewayHashUnique
  ON Cart (PaymentGatewayHash)
  WHERE PaymentGatewayHash IS NOT NULL

我刚刚测试过:D

enter image description here