创建Oracle唯一约束并忽略已有重复值
今天需要对数据库表中的三列创建一个唯一索引,已知存在重复值,
认为可以通过 加入 enable novalidate关键字可以实现
创建语句
alter table bs_warehouse_store add constraint unq_wi_id_unit_code unique(wi_id,unit,pc_cate_code) enable novalidate;
提示:ORA-02299: 无法验证 找到重复关键字
解决办法
先创建组合索引
create index idx_bws_wi_id_unit_code on bs_warehouse_store (wi_id,unit,pc_cate_code) ;
创建完成后在执行语句
alter table bs_warehouse_store add constraint unq_wi_id_unit_code unique(wi_id,unit,pc_cate_code) enable novalidate;
成功完成约束创建
以下对约束的四种状态说明
enable validate :无法输入违反约束的行,而且表中所有行都要符合约束
enable novalidate :表中可以存在不合约束的状态,,但对新加入数据必须符合约束条件.
disable novalidate :可以输入任何数据,表中或已存在不符合约束条件的数据.
disable validate :不能对表进行插入/更新/删除等操作,相当于对整个表的read only设定.
今天需要对数据库表中的三列创建一个唯一索引,已知存在重复值,
认为可以通过 加入 enable novalidate关键字可以实现
创建语句
alter table bs_warehouse_store add constraint unq_wi_id_unit_code unique(wi_id,unit,pc_cate_code) enable novalidate;
提示:ORA-02299: 无法验证 找到重复关键字
解决办法
先创建组合索引
create index idx_bws_wi_id_unit_code on bs_warehouse_store (wi_id,unit,pc_cate_code) ;
创建完成后在执行语句
alter table bs_warehouse_store add constraint unq_wi_id_unit_code unique(wi_id,unit,pc_cate_code) enable novalidate;
成功完成约束创建
以下对约束的四种状态说明
enable validate :无法输入违反约束的行,而且表中所有行都要符合约束
enable novalidate :表中可以存在不合约束的状态,,但对新加入数据必须符合约束条件.
disable novalidate :可以输入任何数据,表中或已存在不符合约束条件的数据.
disable validate :不能对表进行插入/更新/删除等操作,相当于对整个表的read only设定.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28282660/viewspace-1415318/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/28282660/viewspace-1415318/