oracle 同步 部份表,Oracle 同步表数据外键处理
ORA-02266: 表中的唯一/主鍵被啟用的外鍵引用
方法一:
在刪除有父子表關系的表的數據時,我們都知道要先刪除子表 再 刪除父表數據,或者先取消外鍵 然后再刪除。
昨天采用先刪子表 ,再刪父表,刪除時使用truncate,結果在刪除父表的時候,給出了這個提示:“表中的唯一/主鍵被啟用的外鍵引用”。
而改成delete則刪除成功。
網上給出的解釋是ddl與dml 的區別。這也是truncate與delete的又一個不同之處。
方法二:
alter table t_user disable primary key cascade;
truncate table?t_user?;
alter table?t_user??enable primary key;
insert into?t_user??.....
commit;
--查詢表的主鍵約束名
select * from user_constraints e where e.table_name=''; --處輸入表名
--查詢所有引用到該主鍵的記錄
select b.table_name,b.column_name from user_constraints a
inner join user_cons_columns b on a.constraint_name = b.constraint_name
where a.r_constraint_name=''; --此處輸入剛才查詢出來的表主鍵的約束名
方法三:
1、ORACLE數據庫中的外鍵約束名都在表user_constraints中可以查到。其中constraint_type='R'表示是外鍵約束。
2、啟用外鍵約束的命令為:alter table 表名 ?enable constraint ?約束名
3、禁用外鍵約束的命令為:alter table 表名 disable constraint ?約束名
4、然后再用SQL查出數據庫中所有外鍵的約束名:
select 'alter table '||table_name||' enable constraint '||constraint_name||';' from user_constraints where constraint_type='R'
select 'alter table '||table_name||' disable constraint '||constraint_name||';' from user_constraints where constraint_type='R'
總結
以上是生活随笔為你收集整理的oracle 同步 部份表,Oracle 同步表数据外键处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php redis mset,MSET命
- 下一篇: oracle exp导出成功终止,成功终