- 最后登录
- 2017-2-5
- 在线时间
- 3 小时
- 威望
- 0
- 金钱
- 27
- 注册时间
- 2013-8-16
- 阅读权限
- 10
- 帖子
- 3
- 精华
- 0
- 积分
- 0
- UID
- 1187
|
1#
发表于 2013-8-16 15:37:06
|
查看: 3436 |
回复: 2
oracle version 11.2.0.3.0 - 64bit
需要对含有数据的表添加一个唯一约束,由于历史数据比较混乱,少量数据的字段值相同,但是无法处理,
对新保存的记录要做唯一约束,选择 enable novalidate 对已经存在的数据不做检查,但实际却提示: 找到重复关键字。
以下下为实验步骤:
建立测试表
create table tt tablespace users as select object_id, object_name from user_objects where rownum < 10;
insert into tt select object_id, object_name from user_objects where rownum < 5;
commit;
查看有重复数据
select * from tt order by object_id;
添加约束失败
alter table tt add constraint idx_un_id unique(object_id) enable novalidate ;
报错 ora-02299 找到重复关键字
继续
alter table tt add constraint idx_un_id unique(object_id) disable novalidate ;
添加成功,但是不符合要求,还能继续插入重复数据
insert into tt select object_id, object_name from user_objects where rownum < 5;
修改
alter table tt modify constraint idx_un_id enable novalidate ;
报错 ora-02299 找到重复关键字
|
|