在具有另一列的列中插入数据时实现唯一性,约束

时间:2011-03-05 08:16:49

标签: c# .net sql sql-server sql-server-2005

我有一张表A,其中包含Aname,Work

create table A(Aname varchar(40) , Work varchar(40) )

该表已插入以下数据:

INSERT INTO A VALUES ('GREAME ','PLAYER')

Aname ||工作

GREAME PLAYER

现在我希望当我插入新记录时,Aname - GREAME,Work --- SALESMAN,那么它就是

插入,但如果我插入此:Aname - GREAME工作 - 再次播放,则不插入

我想要这个:

Aname ||工作

GREAME PLAYER

GREAME PLAYER ---不能插入

GREAME SALESMAN ---可以插入

也就是说,当要插入Aname

的值时,Work列检查唯一性

已经存在。

我该如何实现?请帮助代码。

EDIT ------

在插入查询中

,将从另一个表B中拾取Aname列 那怎么办呢?

2 个答案:

答案 0 :(得分:3)

唯一约束或主键将阻止您插入错误/异常。此插入不会插入已存在的行。

insert into A (Aname, Work)
select 'GREAME', 'PLAYER'
where not exists (select *
                  from A
                  where Aname = 'GREAME' and Work = 'PLAYER')

答案 1 :(得分:1)

如果您需要将AName和Work组合成唯一,那么

ALTER TABLE A ADD CONSTRAINT U_NameWork UNIQUE(AName, Work)

但是如果你需要AName是独特的,无论工作如何

ALTER TABLE A ADD CONSTRAINT U_Name UNIQUE(AName)

编辑:根据SanjeevKumar,制作(AName,Work)复合PRIMARY KEY也会有效,前提是你没有其他PK,尽管你也可以考虑代理PK。