[英]SQL Server 2005 UNIQUE Constraint on Multiple Column while creating table
我正在使用SQL Server 2005数据库,但遇到了问题。
我正在创建一个像这样的表:
CREATE TABLE CONT_UNIQUE
(
NUM INT,
BRANCH VARCHAR(10),
PIN INT,
CONSTRAINT CON UNIQUE(NUM,BRANCH,PIN)
)
意味着我要向表中存在的所有列添加唯一约束。 但是在表中插入值时,它仅考虑NUM作为UNIQUE,但允许分支和PIN重复值。
以下是我的两个插入查询。
INSERT INTO CONT_UNIQUE VALUES(1, 'MP', 123) -> Working fine
INSERT INTO CONT_UNIQUE VALUES(2, 'MP', 123) -> Should throw error since MP, and 123 are present.
注意:
CREATE TABLE CONT_UNIQUE
(
NUM INT UNIQUE ,
BRANCH VARCHAR(10), UNIQUE,
PIN INT UNIQUE
)
这完全符合预期。
请让我知道我的查询出了什么问题。
您创建了一个约束,以确保没有两行在所有3列中都具有相同的值。
您需要三个单独的约束,一个在NUM上,一个在BRANCH上,一个在PIN上。
CREATE TABLE CONT_UNIQUE
(
NUM INT,
BRANCH VARCHAR(10),
PIN INT,
CONSTRAINT CON UNIQUE(NUM),
CONSTRAINT CON2 UNIQUE(BRANCH),
CONSTRAINT CON3 UNIQUE(PIN)
)
您已经在3列而不是2列的组合上创建了唯一约束,我的意思是您不能再次在表中插入1,'MP',123值,但是可以插入1,'MP',12或1 ,'MP',13插入表格。
这不会引发错误,因为唯一约束在所有3列上。
我想您也想要这个/
... CONSTRAINT only_two_columns UNIQUE (branch, pin) ...
从您的所有答复中,我了解到:1)Unique键与Unique组合一起使用,而不是关注单个的唯一性...例如:unique(Column1,Column2)表示column1和column2的组合不应重复,但各个值可以重复。
2)如果我们希望每一列都具有唯一值,那么在创建表时,我们需要在每一列上提及“唯一”。 例如:Num int唯一,Branch varchar(10)唯一...等等,以便每一列都有唯一的值。
以前,我认为Unique(Col1,col2)与“ col1 int唯一,col2 int唯一”相同。 所以我问了一个问题。
再次感谢大家为解决我的查询提供的支持.. :)
谢谢
马赫什
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.