FKのチェックアウト用のSQLを記述したいと思います。私がこれまでに得たもの:Oracle SQL:外部キーターゲットテーブル
SELECT OWNER,
CONSTRAINT_TYPE,
TABLE_NAME,
R_OWNER,
R_CONSTRAINT_NAME
FROM ALL_CONSTRAINTS
WHERE OWNER = 'XXX'
AND TABLE_NAME = 'XXX'
AND CONSTRAINT_TYPE = 'R'
問題:FKがどこにマッピングされているのかわかりません。あなたはR_OWNERとR_CONSTRAINT_NAMEを持っていますが、R_TABLEはありません。とにかくこれはSQLを書くことによって行うことができますか?
SELECT RC.CONSTRAINT_NAME FK_Name,
KF.TABLE_SCHEMA FK_Schema,
KF.TABLE_NAME FK_Table,
KF.COLUMN_NAME FK_Column,
RC.UNIQUE_CONSTRAINT_NAME PK_Name,
KP.TABLE_SCHEMA PK_Schema,
KP.TABLE_NAME PK_Table,
KP.COLUMN_NAME PK_Column,
RC.MATCH_OPTION MatchOption,
RC.UPDATE_RULE UpdateRule,
RC.DELETE_RULE DeleteRule
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS RC
JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KF ON RC.CONSTRAINT_NAME = KF.CONSTRAINT_NAME
JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KP ON RC.UNIQUE_CONSTRAINT_NAME = KP.CONSTRAINT_NAME;
1つの質問:all_constraintsとall_constraintsを結合する目的は何ですか? – Letterdief
さて、あなたはそれらを一緒に結合するために、同じビューから異なる行を取得します。その目的のために同じテーブルまたはビューを同じクエリで使用することは珍しいことではありません。 – ZZa