我有一张表A,其中包含Aname,Work
列create table A(Aname varchar(40) , Work varchar(40) )
该表已插入以下数据:
INSERT INTO A VALUES ('GREAME ','PLAYER')
现在我希望当我插入新记录时,Aname - GREAME,Work --- SALESMAN,那么它就是
插入,但如果我插入此:Aname - GREAME工作 - 再次播放,则不插入
我想要这个:
也就是说,当要插入Aname
的值时,Work列检查唯一性已经存在。
我该如何实现?请帮助代码。
EDIT ------
在插入查询中,将从另一个表B中拾取Aname列 那怎么办呢?
答案 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。