SQL UNIQUE 为多个列的约束问题

/*建表*/createtableperson_3(IDintnull,namevarchar(255),addressvarchar(255),)/*建立约束*/alt... /*建表*/
create table person_3
(
ID int null,
name varchar(255),
address varchar(255),
)

/*建立约束*/
alter table person_3
add constraint U_person_3 unique (ID,name)

/添加内容 1 JACK A /
insert into person_3 values (1,'JACK','A')

/*添加ADDRESS内容 A 按照道理应该现实命令执行 实际执行成功*/
insert into person_3 (address) values('A')

/*添加ID name 内容 1 rio 按照道理应该显示执行失败 因为之前已经有了1 但是这次显示的是执行成功*/
insert into person_3 (ID,name) values(1,'rio')

程序如上
我的疑问就是 为什么我的 insert into person_3 (ID,name) values(1,'rio') 成功了
而且之后我用了select * from person_3 确实在ID处显示了两个1

我之前的键不是应该键立好了吗

(PS:我尝试过insert into person_3 (ID,name) values(1,'JACK') ,如果这样插入的话显示的是错误)
展开
 我来答
Sephil
推荐于2017-11-26 · 知道合伙人IT服务行家
Sephil
知道合伙人IT服务行家
采纳数:616 获赞数:1036
熟悉常用语言和数据库,爱写代码

向TA提问 私信TA
展开全部
注意你的主键add constraint U_person_3 unique (ID,name),也就是说ID和name都相同才会冲突,只有ID相同或只有name相同是不算重复的
如果你要求ID或name某一项都不能相同,需要建2个唯一约束
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式