表に設定されている制約を確認する方法

この記事では表に設定されている制約を確認する方法を解説します。

 制約の確認方法

表に設定されている制約を確認するにはディクショナリビュー「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」に含まれます。

制約の条件はチェック制約に対する検索条件が表示されます。