1. 程式人生 > >oracle主鍵插入重複資料

oracle主鍵插入重複資料

問題

發現oracle中已經設定了主鍵,但是還能插入重複資料,也是奇葩,後來發現主鍵雖然設定,但是沒有啟動,這才導致可以插入重複主鍵資料

解決辦法

查詢出沒有啟用主鍵的表

select a.constraint_name,b.column_name,a.table_name,a.status 
from user_constraints a,user_cons_columns b 
where a.constraint_type = 'P' and a.status='DISABLED' and b.column_name='ID';

啟用SYS_CONFIG 表主鍵

alter table SYS_CONFIG enable primary key;

停用SYS_CONFIG 表主鍵

alter table SYS_CONFIG disable primary key;

批量啟用主鍵

select 'alter table '||table_name|| ' enable primary key;' from 
(select a.constraint_name,b.column_name,a.table_name,a.status 
from user_constraints a,user_cons_columns b 
where
a.constraint_type = 'P' and a.status='DISABLED' and b.column_name='ID');

修改失敗查詢是哪個資料已經重複了

select * from (select count(*) num,id from SYS_CONFIG group by id )where num>1