この記事では表に設定されている制約を確認する方法を解説します。
制約の確認方法
表に設定されている制約を確認するにはディクショナリビュー「DBA_CONSTRAINTS」と「DBA_CONS_COLUMNS」を使用します。
現行ユーザのスキーマの表のみを確認する場合には「USER_…」に使用します。
確認するSQLは以下の通りです。
SELECT col.table_name, col.column_name, con.constraint_type, con.search_condition
FROM USER_CONS_COLUMNS col
INNER JOIN USER_CONSTRAINTS con ON col.constraint_name = con.constraint_name
ORDER BY 1;
確認例
現行ユーザのスキーマに存在する制約を確認します。
SQL> SELECT col.table_name, col.column_name, con.constraint_type, con.search_condition
2 FROM USER_CONS_COLUMNS col
3 INNER JOIN USER_CONSTRAINTS con ON col.constraint_name = con.constraint_name
4 ORDER BY 1;
TABLE_NAME COLUMN_NAME CONSTRAINT_TYPE SEARCH_CONDITION
---------- ----------- --------------- ---------------------
CARD CARD_NO C "CARD_NO" IS NOT NULL
CARD NAME C "NAME" IS NOT NULL
CARD PID C "PID" IS NOT NULL
EMP EMPNO P
EMP1 EMPNO P
EMP1 EMPNO C "EMPNO" IS NOT NULL
EMP2 EMPNO C "EMPNO" IS NOT NULL
7行が選択されました。
それぞれテーブル名、カラム名、制約の種類、制約の条件が選択されます。
制約の種類は「C」がチェック制約、「P」が主キー制約、「U」がユニーク制約、「R」が参照整合性制約を表します。
NOT NULL制約は「C」に含まれます。
制約の条件はチェック制約に対する検索条件が表示されます。