外部キー
getExportedKeys メソッドまたはgetImportedKeys メソッドを実行して、外部キーの情報を取得できます。
-
指定したテーブルがエクスポートするすべての外部キーの情報を取得するには、getExportedKeys メソッドを呼び出します。
次の例は、Orders の主キーを参照する外部キー、および関連付けられている外部キーが含まれるテーブルを出力します。
String connectionString = "jdbc:mariadb:User=myUser;Password=myPassword;Database=NorthWind;Server=myServer;Port=3306;"; Connection conn = DriverManager.getConnection(connectionString); ResultSet rs = conn.getMetaData().getExportedKeys(null,null,"Orders"); while(rs.next()){ System.out.println(rs.getString("FKCOLUMN_NAME")+": "+rs.getString("FKTABLE_NAME")); }
-
指定したテーブルがインポートするすべての主キーの情報を返すには、getImportedKeys メソッドを呼び出します。
次の例は、Orders テーブルによってインポートされる外部キーカラム、および関連付けられている主キーが含まれるテーブルを出力します。
String connectionString = "jdbc:mariadb:User=myUser;Password=myPassword;Database=NorthWind;Server=myServer;Port=3306;"; Connection conn = DriverManager.getConnection(connectionString); ResultSet rs = conn.getMetaData().getImportedKeys(null,null,"Orders"); while(rs.next()){ System.out.println(rs.getString("FKCOLUMN_NAME")+": "+rs.getString("PKTABLE_NAME")); }
カラム名 | データ型 | 説明 |
PK_TABLE_CAT | String | 主キーを含むテーブルのカタログ。 |
PKTABLE_SCHEM | String | 主キーを含むテーブルのスキーマ。 |
PKTABLE_NAME | String | 主キーを含むテーブルの名前。 |
PKCOLUMN_NAME | String | 主キーのカラム名。 |
FKTABLE_CAT | String | 外部キーを含むテーブルのカタログ。 |
FKTABLE_SCHEM | String | 外部キーを含むテーブルのスキーマ。 |
FKTABLE_NAME | String | 外部キーを含むテーブルの名前。 |
FKCOLUMN_NAME | String | 外部キーのカラム名。 |
KEY_SEQ | short | 外部キー内のシーケンス番号(1から始まるカラムインデックス)。 |
UPDATE_RULE | short | 主キーが更新された場合のアクションを指定するルール。 |
DELETE_RULE | short | 主キーが削除された場合のアクションを指定するルール。 |
FK_NAME | String | 外部キー名、またはnull。 |
PK_NAME | String | 主キー名。 |
DEFERRABILITY | short | 外部キー制約の評価をコミットまで延期できるかどうか。 |
次の表に、UPDATE_RULE カラムおよびDELETE_RULE カラムのルールを示します。ルールは、DatabaseMetaData クラスで定義されている次の定数を使用して指定されます。
名前 | 値 | 説明 |
importedKeyNoAction | 3 | 主キーがインポートされている場合は更新しません。 |
importedKeyCascade | 0 | 主キーと一致するように、インポートされたキーを更新します。 |
importedKeySetNull | 2 | 主キーが更新された場合に、インポートされたキーを"NULL" に変更します。 |
importedKeySetDefault | 4 | 主キーが更新された場合に、インポートされたキーをデフォルト値に変更します。 |
importedKeyRestrict | 1 | このルールはimportedNoAction と同じです(ODBC 2.x との下位互換性を提供します)。 |
以下の表に、DEFERRABILITY カラムの有効な値を示します。これらの値は、DatabaseMetaData クラスで定義されている次の定数を使用して指定されます。
名前 | 値 | 説明 |
importedKeyInitiallyDeferred | 5 | 外部キーが初期状態で遅延されることを示します。 |
importedKeyInitiallyImmediate | 6 | 外部キーが初期状態で即時であることを示します。 |
importedKeyNotDeferrable. | 7 | 外部キーが遅延できないことを示します。 |
上記の値の詳細については、SQL-92 を参照してください。