Oracle中快速刪除所有表數據


一、禁止所有的外鍵約束

 

在pl/sql developer下執行如下語句:
SELECT 'ALTER TABLE ' || table_name || ' disable CONSTRAINT ' || constraint_name || ';' FROM user_constraints where CONSTRAINT_TYPE = 'R';
把查詢出來的結果拷出來在pl/sql developer時執行。
若沒有pl/sql developer,可以在sqlplus里操作,方法如下:
1. 打開sqlplus,並用相應的用戶連接。
2. 把pagesize設大點,如set pagesize 20000
3. 用spool把相應的結果導到文件時,如
SQL> spool /home/oracle/constraint.sql
SQL> SELECT 'ALTER TABLE ' || table_name || ' disable CONSTRAINT ' || constraint_name || ';' FROM user_constraints where CONSTRAINT_TYPE = 'R';
SQL> spool off
4. 已經生成了包含相應語句的腳本,不過腳本文件里的最前和最后面有多余的語句,用文本編輯器打開,並刪除沒用的語句即可
5. 重新用相應的用戶登錄sqlplus,執行如下命令
SQL> @/home/oracle/constraint.sql

 

二、用delete或truncate刪除所有表的內容

 

SELECT 'DELETE FROM '|| table_name || ';' FROM USER_TABLES
ORDER BY TABLE_NAME;

SELECT 'TRUNCATE TABLE '|| table_name || ';' FROM USER_TABLES
ORDER BY TABLE_NAME;
用第一步類似的方法操作。要注意的一點是,若表的數據有觸發器相關聯,只能用truncate語句,不過truncate語句不能回滾,所以時要注意

 

三、把已經禁止的外鍵打開

 

SELECT 'ALTER TABLE ' || table_name || ' enable CONSTRAINT ' || constraint_name || ';' FROM user_constraints where CONSTRAINT_TYPE = 'R';


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM