« 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が反応しない・・・? »

DB」カテゴリの記事

Java」カテゴリの記事

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

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/3959/43336661

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

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