Foreign key Dialog

Foreignkey ダイアログを使用して、外部キーコンストレインの動作を指定します。外部キー制約は、2つのテーブル間の参照整合性を維持します。外部キー制約は、一時テーブルと永続テーブルの間では定義できません。

Foreignkey ダイアログは、次のダイアログタブ General 、 Definition 、 Columns 、および Action を介して外部キーコンストレインの開発を編成します。[ SQL ]タブには、ダイアログ選択によって生成されたSQLコードが表示されます。

外部キーダイアログの[一般]タブ

[ General ]タブのフィールドを使用して、外部キー制約を特定します。

  • Name フィールドを使用して、外部キーの説明的な名前を追加します。名前は pgAdmin ツリーコントロールに表示されます。

  • 外部キーコンストレインに関するメモを コメント フィールドに保存します。

[ 定義 ]タブをクリックして続行します。

外部キーダイアログ定義タブ

Definition タブのフィールドを使用して、外部キーコンストレインを定義します。

  • Deferrable? スイッチを Yes の位置に移動して、制約のタイミングが遅延可能で、ステートメントの最後まで延期できることを指定します。デフォルトは いいえ です。

  • 有効になっている場合、 Deferred? スイッチを Yes の位置に移動して、コンストレインのタイミングがステートメントの最後まで遅延されるように指定します。デフォルトは いいえ です。

  • Matchtype スイッチを移動して、コンストレインによって強制されるマッチングのタイプを指定します。

    • Full を選択して、列がnullの場合、複数列外部キーのすべての列がnullである必要があることを示します。すべての列がnullの場合、行は参照されるテーブルで一致する必要はありません。

    • Simple を選択して、単一の外部キー列がnullでもよいことを指定します。列がnullの場合、行は参照先テーブルで一致する必要はありません。

  • Validated スイッチを Yes の位置に移動して、このダイアログに変更を保存するときに既存のテーブルコンテンツを外部キーまたはチェック制約に対して検証するようにサーバーに指示します。

  • 自動インデックス機能を無効にするには、 AutoFKIndex スイッチを No の位置に移動します。

  • AutoFKIndex スイッチが Yes 位置にある場合、 CoveringIndex の横にあるフィールドはインデックスの名前を生成します。または、このフィールドは無効になっています。

[ Columns ]タブをクリックして続行します。

外部キーダイアログの列タブ

Columns タブのフィールドを使用して、1つ以上の参照列を指定します。外部キー制約では、テーブルの1つ以上の列に、参照先テーブルの行の参照列の値と一致する値のみを含めることが必要です。

  • ローカル列 の横にあるドロップダウンリストボックスを使用して、外部テーブルと比較する現在のテーブルの列を指定します。

  • References の横にあるドロップダウンリストボックスを使用して、比較列が存在するテーブルの名前を指定します。

  • Referencing の横にあるドロップダウンリストボックスを使用して、外部テーブルの列を指定します。

Add アイコン+をクリックして、リストに列を追加します。上記の手順を繰り返し、[ 追加 ]アイコン+をクリックして列を追加します。エントリを破棄するには、エントリの左側のゴミ箱アイコンをクリックし、 DeleteRow ポップアップで削除を確認します。

[ Action ]タブをクリックして続行します。

外部キーダイアログアクションタブ

[ アクション ]タブのドロップダウンリストボックスを使用して、テーブル内のデータが更新または削除されたときに実行される外部キー制約に関連する動作を指定します。

  • Onupdate の横にあるドロップダウンリストボックスを使用して、テーブル内のデータが更新されたときに実行されるアクションを選択します。

  • Ondelete の横にあるドロップダウンリストボックスを使用して、テーブル内のデータが削除されたときに実行されるアクションを選択します。

サポートされているアクションは次のとおりです。

ノーアクション

削除または更新によって外部キー制約違反が作成されることを示すエラーを生成します。制約が据え置かれている場合、参照行がまだ存在している場合、このエラーは制約チェック時に生成されます。これがデフォルトです。

制限

削除または更新により外部キー制約違反が作成されることを示すエラーをスローします。これは、チェックが遅延可能でないことを除き、NOACTIONと同じです。

カスケード

削除された行を参照する行を削除するか、参照列の値を参照列の新しい値にそれぞれ更新します。

SETNULL

参照列をnullに設定します。

デフォルトを設定

参照列をデフォルト値に設定します。参照先テーブルに、デフォルト値がnullでない場合と一致する行が存在する必要があります。そうでない場合、操作は失敗します。

[ SQL ]タブをクリックして続行します。

Foreignkey ダイアログの入力は、SQLコマンドを生成します。以下の例を参照してください。確認には SQL タブを使用します。再度アクセスするか、タブを切り替えて、SQLコマンドを変更します。

例

以下は、 外部キー ダイアログでのユーザー選択によって生成されたsqlコマンドの例です。

外部キーダイアログSQLタブ

この例では、 jobhist テーブル dept_no 列の値と dept テーブルの deptno 列の値と一致する jobhist_ref_dept_fk という名前の外部キー制約を作成する方法を示しています。

  • 情報 ボタンiをクリックして、オンラインヘルプにアクセスします。

  • Save ボタンをクリックして、作業を保存します。

  • Close ボタンをクリックして、作業を保存せずに終了します。

  • Reset ボタンをクリックして、構成パラメーターを復元します。