表中已存重复数据的情况,如何增加唯一性约束


1.oracle 官网给出建议:
如果约束设置enable,则会检查新插入或更新的数据是否符合约束条件。

如果约束设置disable,则表中可以包含,违反约束的记录。

如果约束设置validate,则表中存在的数据,必须符合约束。

如果约束设置novalidate,则表中存在的数据,不必符合约束。

validate和novalidate的行为,依赖于是否设置了enabled/disabled。 因此创建约束的时候,可以选择组合方式来达到目的。

2.针对表中已存在重复数据且要增加唯一约束的情况:
a.直接创建唯一约束,仍报错,是因为数据库会根据唯一约束创建唯一索引,因此报错;
alter table table_name add constraint constraint_name unique(colunum) enable novalidate;

b.此时应该先创建普通索引,然后在此基础上创建唯一约束:
create index idx_name on table_name(colunum);
alter table table_name add constraint constraint_name unique(colunum) enable novalidate;

 

同理:也可以根据此方法创建唯一主键

create index idx_name on table_name(colunum);

alter table tablename add constraint pk_tablename primary key (column1,column2,...) enable novalidate;

转载于:https://www.cnblogs.com/douwant/p/11264887.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值