快速刪除有外來鍵關聯的資料庫的資料

szjay發表於2013-09-16

某系統有600張表,要求刪除業務資料,但保留基礎資料(部門和人員等)和字典資料。

如果一張表一張表刪除工作量就大了,因為外來鍵關聯決定了刪除必須有先後順序。

我們可以在刪除前禁用外來鍵,待刪除完畢之後再啟用外來鍵。

當然,最後啟用的時候發現刪除了不應該刪除的資料,因此刪除前最好做完整備份。

 

生成禁用外來鍵的指令碼:

select 'alter table '|| t.table_name||' disable constraint '||t.constraint_name||';'
from user_constraints t where t.constraint_type = 'R'
order by t.table_name

 

生成啟用外來鍵的指令碼:

 

select 'alter table '|| t.table_name ||' enable constraint '||t.constraint_name||';'
from user_constraints t where t.constraint_type = 'R'
order by t.table_name

相關文章