primary key与unique

重点看4和5,1到3关于这两个的差别,网上有更详细的介绍。

1.一张表只能有一个primary key键,可以有多个unique键。 primary key键对应的字段不可为空 ,数值上不能有重复值。 unique键对应的字段可为空,数值上允许插入多行空值,但非空值的数据不能相同。 举个例子:primary key键可以用于身份证,因为公民都有身份证,且不重复。unique键可用于手机,因为有些人没有手机。
2.
相关脚本:
CREATE TABLE T1206(ID NUMBER,C1 VARCHAR2(50));  
ALTER TABLE T1206  ADD CONSTRAINT PK_T1206 PRIMARY KEY(ID);/*创建主键约束,也可用 ALTER TABLE T1206  ADD PRIMARY KEY(ID) 但不建议这样写,这样得出来的约束CONSTRAINT名为ORACLE自定义生成的,不便于维护 */  
ALTER TABLE T1206  ADD CONSTRAINT UK_T1206_C1 UNIQUE (C1);
3.
查看两字典表:





就是说, 创建完一个primary与uniqu键后,ORACLE都会自动建一个unique index
4.删除该表,重建一下,并创建一个unique index在c1列。
DROP TABLE T1206;
CREATE TABLE T1206(ID NUMBER,C1 VARCHAR2(50));
CREATE UNIQUE INDEX IDX_UK_T1206_C1 ON T1206(C1);
SELECT * FROM USER_CONSTRAINTS WHERE TABLE_NAME='T1206';
SELECT * FROM USER_INDEXES WHERE TABLE_NAME='T1206';
查看字典表:


 

说明直接先创建unique index并不会产生约束。
连续插入该表C1的重复数据,会触发唯一性判断。


5.那么那天你遇到的问题,某个采集过程因源头重复数据造成唯一性报错,但找到该表发现它没有任何键。应该就是之前同事建这个表时,直接建了unique index。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值