關於外來鍵約束和對應主鍵資訊的查詢指令碼
初衷是想根據表中存在的外來鍵資訊得到相應的索引指令碼,後來才擴充套件到獲取相應的主鍵欄位,大同小異。
這些系統表都是相類似的,例如user_cons_columns 和user_constraints, user_indexes和user_ind_columns
定義一個函式,把多列的約束欄位以逗號串起來
create or replace function f_GetConstraintColumn(itablename in Varchar2,iConstraintName in Varchar2)
return varchar2 is
type cur_type is ref cursor;
myCur cur_type;
v_Column1Value varchar2(4000);
v_Result varchar2(32767);
begin
Open myCur for Select COLUMN_NAME
From user_cons_columns
Where table_name=itablename And constraint_name=iConstraintName
Order By POSITION;
Loop
Fetch myCur Into v_Column1Value;
Exit When myCur%notfound;
v_Result:=v_Result||v_Column1Value||',';
End Loop;
Close myCur;
v_Result:=substr(v_Result,1,length(v_Result)-1);
return(v_Result);
end ;
--該語句用來得到外來鍵表、外來鍵約束名稱、外來鍵欄位和相應的主鍵表、主鍵欄位,主鍵約束名稱等等,稍作改動便可以寫出建立相應的約束指令碼和索引指令碼
Select
a.table_name ForeignKeyTableName, a.constraint_name,f_GetConstraintColumn(a.table_name, a.constraint_name) ForeignKeyColumnsName,
a.r_constraint_name,b.table_name PrimaryKeyTableName,f_GetConstraintColumn(b.table_name, a.r_constraint_name) PrimaryKeyColumnsName
From user_constraints a,user_constraints b
Where a.constraint_type='R'
And a.r_constraint_name=b.constraint_name
-- And a.table_name = 'T_FACTORING_INV'
Order By a.table_name, a.constraint_name
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/6517/viewspace-145591/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL的主鍵和外來鍵約束SQL
- 查詢(看)表的主鍵、外來鍵、唯一性約束和索引索引
- ORACLE: 查詢(看)表的主鍵、外來鍵、唯一性約束和索引Oracle索引
- 查詢外來鍵約束、子表欄位等資訊的SQLSQL
- 【實驗】【外來鍵】小議外來鍵約束對應用程式的影響
- mysql啟動和關閉外來鍵約束MySql
- Javaweb-約束-外來鍵約束JavaWeb
- Oracle根據主鍵查詢外來鍵Oracle
- Oracle定義約束 外來鍵約束Oracle
- 資料完整性約束:主鍵、外來鍵、各種約束的建立刪除語句
- oracle外來鍵約束的總結Oracle
- 資料庫約束 主鍵-唯一性-Check-外來鍵資料庫
- 生成指令碼,得到所有表的外來鍵約束,然後刪除並重建這些約束指令碼
- 教你mysql如何增加外來鍵約束MySql
- MySQL禁用恢復外來鍵約束MySql
- 外來鍵缺索引檢查指令碼索引指令碼
- 約束:確保資料的完整性(主鍵,唯一,檢查,預設,非空,外來鍵)
- Oracle查詢表的外來鍵引用關係Oracle
- SQL外來鍵約束的含義及建立SQL
- Oracle外來鍵約束中NULL的處理OracleNull
- 檢查外來鍵是否有索引的指令碼索引指令碼
- oracle查詢表資訊(索引,外來鍵,列等)Oracle索引
- mysql 刪除老是報外來鍵約束MySql
- 父表修改與外來鍵的關係(主鍵DML與外來鍵的關係)
- Oracle 外來鍵查詢sqlOracleSQL
- 【MySQL】MySQL進階(外來鍵約束、多表查詢、檢視、備份與恢復)MySql
- Oracle主鍵約束、唯一鍵約束、唯一索引的區別(轉)Oracle索引
- Mysql關於資料庫是否應該使用外來鍵約束詳解說明創磅MySql資料庫
- 新的主鍵和外來鍵的語法
- SQL SERVER中找出拙劣的約束,索引,外來鍵SQLServer索引
- 查詢系統關鍵資訊
- AppBoxFuture(七): 分散式外來鍵約束APP分散式
- mysql不能新增外來鍵約束怎麼辦MySql
- 詳解外來鍵約束(foreign key)
- 查詢沒有索引的外來鍵索引
- 查詢一個表的外來鍵
- mysql啟動和關閉外來鍵約束的方法(FOREIGN_KEY_CHECKS)MySql
- 解決資料庫的索引亂碼問題,先刪除外來鍵約束,再刪除主鍵約束及其索引資料庫索引