2017-08-03 9 views
0

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; 

答えて

0

を更新:

+0

1つの質問:all_constraintsとall_constraintsを結合する目的は何ですか? – Letterdief

+0

さて、あなたはそれらを一緒に結合するために、同じビューから異なる行を取得します。その目的のために同じテーブルまたはビューを同じクエリで使用することは珍しいことではありません。 – ZZa

-1

は、既存のすべての外部キーのリストを取得することができます。

これは、あなたが望むものをあなたに与えます:

select 
    cc.owner, 
    cc.constraint_name, 
    cc.table_name, 
    cc.column_name, 
    c.r_owner, 
    c_pk.table_name r_table_name, 
    c_pk.constraint_name r_pk 
from all_cons_columns cc 
join all_constraints c on cc.owner = c.owner and cc.constraint_name = c.constraint_name 
join all_constraints c_pk on c.r_owner = c_pk.owner and c.r_constraint_name = c_pk.constraint_name 
where c.constraint_type = 'R' 
and cc.owner = 'XXX' 
and cc.table_name = 'XXX'; 
+0

私はまた、Oracleで検索し、その利用可能なGoogleでのOracle –

+0

には 'information_schema'はありませんが、https://docs.oracle.comをリンクを参照してください/cd/E19078-01/mysql/mysql-refman-5.0/information-schema.html –

+0

いいえ、そうではありません。確認せずにGoogleでランダムにヒットしたとは思わないでください。 [マニュアルを読む](http://docs.oracle.com/database/121/REFRN/toc.htm) –