« Wikiページの更新状況を表示する | Main | Transformerが反応しない・・・? »

2008.12.07

JDBCで外部キー情報を取得する

 JDBCであるテーブルの外部キー(ForeignKey)情報を取得する場合は、DatabaseMetaData#getCrossReferenceメソッドを利用すればいいようです。

 あるテーブルを参照している外部キーの一覧を取得したい場合は後ろ3つの引数にnullをセット(『親テーブル』を指定)、あるテーブルが参照している外部キーの一覧を取得したい場合は前3つの引数にnullをセットすれば、欲しい情報が取得できるような感じです。

例)testスキーマのsample1テーブル参照している外部キー情報を取得する。

ResultSet result = metadata.getCrossReference(null,"test","sample1",null, null, null);

例)hogeスキーマのfugaテーブル参照している外部キー情報を取得する。

ResultSet result = metadata.getCrossReference(null,null, null, null,"hoge","fuga");

2008/12/11追記
データベースによっては、DatabaseMetaData#getCrossReferenceにおいて、テーブル名にnullを指定できない(3つ目と6つ目の引数は、いずれもnull以外の値でなければならない)ものもあるようです(試した範囲では、PostgreSQLはnullを許容しますが、DB2は駄目でした)。そういう場合は、getImportedKeys(指定したテーブル参照している外部キー情報を取得)あるいはgetExportedKeys(指定したテーブル参照している外部キー情報を取得)を利用すればOKです・・・というか、こっちを使う方が正当派?(^^;

|

« Wikiページの更新状況を表示する | Main | Transformerが反応しない・・・? »

Java」カテゴリの記事

DB」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack


Listed below are links to weblogs that reference JDBCで外部キー情報を取得する:

« Wikiページの更新状況を表示する | Main | Transformerが反応しない・・・? »