作業ノート

様々なまとめ、雑感など

参照整合性制約で参照されるテーブルから、定義したテーブルと制約名を取得するSQL

以下はFOOテーブルのカラムを参照するテーブルと制約名を取得するSQL。

SELECT
    uc.table_name,
    uc.constraint_name
FROM user_constraints uc
JOIN user_constraints ruc ON
    ruc.owner = uc.r_owner AND ruc.constraint_name = uc.r_constraint_name
WHERE
    uc.constraint_type = 'R' AND ruc.table_name = 'FOO'
;

使用するのはuser_constraintsビュー。

constraint_typeRとなっているのが参照整合性制約の定義。これは該当テーブル名と制約名、参照先テーブルの一意制約名からなる。

参照整合性制約の定義を取得するビュー(uc)と、参照先の一意制約の定義を取得するするビューを(ruc)内部結合して、該当の定義を取得する。

参考