Oracle將用戶創(chuàng)建的表,、約束等信息都放在數(shù)據(jù)字典表中,,允許開發(fā)人員查詢數(shù)據(jù)字典表或視圖來獲取數(shù)據(jù)庫對象的信息。
有兩個數(shù)據(jù)字典視圖提供了約束的詳細信息:
- user_constraints :如果知道約束名,,想知道約束類型,,可以查詢user_constraints ,這個視圖描述了約束的定義,,但是它不描述約束定義在哪些字段名稱上,。
- user_cons_columns :視圖中顯示約束的字段名稱。如果主鍵是一個聯(lián)合主鍵,,這個視圖中將有這個約束的兩條記錄,,聯(lián)合主鍵的每一個字段對應(yīng)一條記錄。每一條記錄通過position(在聯(lián)合主鍵中的位置)來區(qū)別,。
例如想要查詢invoice_check_others 表中的所有約束信息,,可以這樣:
--查詢invoice_check_others表中的所有約束
SELECT constraint_name, search_condition, status
FROM user_constraints
WHERE table_name = UPPER ('invoice_check_others');
如果要獲取invoice_check_others 表的列約束信息,可以這樣:
--查詢約束應(yīng)用的列信息
SELECT constraint_name, column_name
FROM user_cons_columns
WHERE table_name = UPPER ('invoice_check_others');
作為DBA,,還可以使用all_constraints 和all_cons_columns 來獲取約束的詳細信息,,如:
SELECT a.table_name,
a.constraint_name,
a.search_condition,
b.column_name,
a.constraint_type
FROM all_constraints a, all_cons_columns b
WHERE a.table_name = UPPER ('invoice_check_others')
AND a.table_name = b.table_name
AND a.owner = b.owner
AND a.constraint_name = b.constraint_name;
|