我在数据库中有两列类型和名称。我想在每个类型中名称都是唯一的情况下应用唯一约束。如何在两列SQL Server上应用唯一约束?
Type Name
A ABC
R ABC
B ABC
应该被允许,而
Type Name
A ABC
A ABC
不应该被允许
如何加强这个约束name是每种类型中是唯一的?
感谢,
我在数据库中有两列类型和名称。我想在每个类型中名称都是唯一的情况下应用唯一约束。如何在两列SQL Server上应用唯一约束?
Type Name
A ABC
R ABC
B ABC
应该被允许,而
Type Name
A ABC
A ABC
不应该被允许
如何加强这个约束name是每种类型中是唯一的?
感谢,
您可以创建这样
ALTER TABLE MyTable ADD UNIQUE (Type, Name)
这会强制你描述的规则多列唯一约束。
在创建表,你可以做
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
这不起作用我希望名称在每种类型中都是唯一的。该名称可以在不同类型中重复使用。上述方法不允许重复输入不同的类型。 – asifa 2012-07-09 06:02:15
嘿Asifa现在测试它的工作。 – 2012-07-09 06:17:40
我会**真的**不建议有两个VARCHAR(255)作为任何表的主键... – 2012-07-09 16:00:56
检查此问题http://stackoverflow.com/questions/5184194/unique-key-based-on-2-columns-in-sql-server-2008 – 2012-07-09 05:50:20