2012-07-09 142 views
1

我在数据库中有两列类型和名称。我想在每个类型中名称都是唯一的情况下应用唯一约束。如何在两列SQL Server上应用唯一约束?

Type Name 
A  ABC 
R  ABC 
B  ABC 

应该被允许,而

Type Name 
A ABC 
A ABC 

不应该被允许

如何加强这个约束name是每种类型中是唯一的?

感谢,

+0

检查此问题http://stackoverflow.com/questions/5184194/unique-key-based-on-2-columns-in-sql-server-2008 – 2012-07-09 05:50:20

回答

5

您可以创建这样

ALTER TABLE MyTable ADD UNIQUE (Type, Name) 

这会强制你描述的规则多列唯一约束。

0

在创建表,你可以做

CREATE TABLE YourTable(
    Name VARCHAR(255) NOT NULL, 
    Type VARCHAR(255) NOT NULL, 
    PRIMARY KEY (Type, Name) 
) 

或者你可以用

ALTER TABLE YourTable ADD PRIMARY KEY (Type, Name) 

之后,我执行以下四个改变你的表。(最后一个失败)

insert into YourTable values('AB','ABD') 
insert into YourTable values('AA','ABD') 
insert into YourTable values('AA','ABC') 
insert into YourTable values('AA','ABD') 

谢谢, Jigar

+0

这不起作用我希望名称在每种类型中都是唯一的。该名称可以在不同类型中重复使用。上述方法不允许重复输入不同的类型。 – asifa 2012-07-09 06:02:15

+0

嘿Asifa现在测试它的工作。 – 2012-07-09 06:17:40

+1

我会**真的**不建议有两个VARCHAR(255)作为任何表的主键... – 2012-07-09 16:00:56