1.檢查哪些表的外鍵引用了要刪除的表的唯一/主鍵.
select A.*
from user_constraints A, user_constraints B
WHERE b.table_name = 'MYTEST'
and a.constraint_type = 'R'
and a.r_constraint_name = b.constraint_name;
2.生成所有引用要刪除表的外鍵的創建語句.
select 'select dbms_metadata.get_ddl(''REF_CONSTRAINT'',''' ||
A.CONSTRAINT_NAME || ''') FROM DUAL;'
from user_constraints A, user_constraints B
WHERE b.table_name = 'MYTEST'
and a.constraint_type = 'R'
and a.r_constraint_name = b.constraint_name;
3.執行步驟2中產生的SQL語句,獲取外鍵定義.
set long 3000
set linesize 3000
set pagesize 300
執行步驟2產生的語句.
4.刪除表.
drop table mytest cascade constraints;
5.刪除並重建表.
6.建立因創建該表所刪除的外鍵約束.
執行步驟3中獲取到的sql語句.
7.檢查各外鍵是否得到恢復,系統是否正常.