外部キー
getExportedKeys メソッドまたはgetImportedKeys メソッドを実行して、外部キーの情報を取得できます。
-
指定したテーブルがエクスポートするすべての外部キーの情報を取得するには、getExportedKeys メソッドを呼び出します。
次の例は、"CData"."dbo".NorthwindProducts の主キーを参照する外部キー、および関連付けられている外部キーが含まれるテーブルを出力します。
String connectionString = "jdbc:teradata:User=Admin;Password=test123;Database=Northwind;DataSource=127.0.0.1"; Connection conn = DriverManager.getConnection(connectionString); ResultSet rs = conn.getMetaData().getExportedKeys("CData","dbo","NorthwindProducts"); while(rs.next()){ System.out.println(rs.getString("FKCOLUMN_NAME")+": "+rs.getString("FKTABLE_NAME")); } -
指定したテーブルがインポートするすべての主キーの情報を返すには、getImportedKeys メソッドを呼び出します。
次の例は、"CData"."dbo".NorthwindProducts テーブルによってインポートされる外部キーカラム、および関連付けられている主キーが含まれるテーブルを出力します。
String connectionString = "jdbc:teradata:User=Admin;Password=test123;Database=Northwind;DataSource=127.0.0.1"; Connection conn = DriverManager.getConnection(connectionString); ResultSet rs = conn.getMetaData().getImportedKeys("CData","dbo","NorthwindProducts"); 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 を参照してください。