Oracle中快速查詢和操作某個用戶下的所有表數據信息


一、禁止所有的外鍵約束

在pl/sql developer下執行如下語句:
SELECT 'ALTER TABLE ' || table_name || ' disable CONSTRAINT ' || constraint_name || ';' FROM user_constraints where CONSTRAINT_TYPE = 'R';
把查詢出來的結果拷出來在pl/sql developer時執行。

先看看user_constraints是什么

user_constraints是表約束的視圖,描述的是約束類型(constraint_type)是什么,屬於哪些表(table_name),如果約束的類型為R(外鍵)的話,那么r_constraint_name字段存放的就是被引用主表中的主鍵約束名。

先看看user_cons_columns是什么

user_cons_columns是表約束字段的視圖,說明表中的和約束相關的列參與了哪些約束。這些約束有主鍵約束,外鍵約束,索引約束.
  兩者可以通過(owner,constraint_name,table_name)關聯 

select 
a.owner 外鍵擁有者, 
a.table_name 外鍵表, 
substr(c.column_name,1,127) 外鍵列, 
b.owner 主鍵擁有者, 
b.table_name 主鍵表, 
substr(d.column_name,1,127) 主鍵列 
from 
user_constraints a, 
user_constraints b, 
user_cons_columns c, 
user_cons_columns d 
where 
    a.r_constraint_name=b.constraint_name 
and a.constraint_type='R' 
and b.constraint_type='P' 
and a.r_owner=b.owner 
and a.constraint_name=c.constraint_name 
and b.constraint_name=d.constraint_name 
and a.owner=c.owner 
and a.table_name=c.table_name 
and b.owner=d.owner 
and b.table_name=d.table_name

用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 TRUNCATE TABLE A;
2 TRUNCATE TABLE ACCEPT_SN;
3 TRUNCATE TABLE B;


免責聲明!

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



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