我在create table函数中有以下Computed Column:
Create table test
(
Code1 nchar(10),
Code2 nchar (10),
Type nchar(10),
Final AS CASE WHEN LEN(Code1)>0 THEN Code1 WHEN LEN(Code2)>0 THEN Code2 ELSE Type END
);
Alter table test
add constraint PK_Test1
Primary Key (Final)
但是我收到以下错误
"无法在表"中的可空列上定义PRIMARY KEY约束。
这是因为代码1,代码2和类型可以为NULL,但这三个都不会为NULL。其中一个总会有价值。
无论如何我可以将计算列定义为主键并考虑到上述内容吗?
非常感谢 - JT
答案 0 :(得分:1)
您的计算列需要保留并且NOT NULL才能用作主键;
Create table test
(
Code1 nchar(10),
Code2 nchar (10),
Type nchar(10),
Final AS CASE WHEN LEN(Code1)>0 THEN Code1
WHEN LEN(Code2)>0 THEN Code2
ELSE Type END
PERSISTED NOT NULL
);
答案 1 :(得分:1)
为什么不使用unique constraint,因为它会允许null
与PRIMARY KEY约束不同,UNIQUE约束允许该值 空值。但是,与参与UNIQUE约束的任何值一样, 每列只允许一个空值。可以是UNIQUE约束 由FOREIGN KEY约束引用。