快速刪除某個使用者下的所有表資料

2021-05-24 06:37:56 字數 1222 閱讀 7219

一、禁止所有的外來鍵約束

在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';

刪除某個使用者下的所有表

1 select drop table table name from all tables where owner 要刪除的使用者名稱 注意要大寫 2 刪除所有表 以使用者test為例 for example declare cursor cur1 is select table name fro...

oracle 中快速刪除某個使用者下所有表資料

一 禁止所有的外來鍵約束 在pl sql developer下執行如下語句 select alter table table name disable constraint constraint name from user constraints where constraint type r 把...

Oracle中刪除某個使用者下的所有表

一般的方法 先使用sql查詢 select delete from table name from user tables order by table name 將查詢結果複製一下,在sql命令視窗裡再執行一次就刪除了所有的表。select drop table table name from c...