次の方法で共有


外部キー リレーションシップの変更

SQL Server 2012 では、SQL Server Management Studio または Transact-SQL を使用して、リレーションシップの外部キー側を変更できます。 テーブルの外部キーを変更すると、主キー テーブルの列に関連付けられる列が変更されます。

このトピックの内容

  • 作業を開始する準備:

    制限事項と制約事項

    セキュリティ

  • 以下を使用して外部キーを変更するには:

    SQL Server Management Studio

    Transact-SQL

作業を開始する準備

制限事項と制約事項

新しい外部キー列は、関連付けられる主キー列のデータ型およびサイズと一致する必要があります。ただし、次の例外があります。

  • char 列または sysname 列は、varchar 列と関連付けることができます。

  • binary 列は、varbinary 列と関連付けることができます。

  • alias データ型は、その基本型に関連付けることができます。

セキュリティ

権限

テーブルに対する ALTER 権限が必要です。

[トップに戻る] リンクで使用される矢印アイコン[Top]

SQL Server Management Studio の使用

外部キーを変更するには

  1. オブジェクト エクスプローラーで、外部キーが含まれているテーブルを展開し、[キー] を展開します。

  2. 変更する外部キーを右クリックし、[変更] を選択します。

  3. [外部キー リレーションシップ] ダイアログ ボックスでは、次の変更を行うことができます。

    • [選択されたリレーションシップ]
      既存のリレーションシップを一覧表示します。 右側のグリッドにプロパティを表示するリレーションシップを選択します。 この一覧が空の場合、テーブルにはリレーションシップがまったく定義されていません。

    • [追加]
      新しいリレーションシップを作成します。 リレーションシップを有効にする前に、[テーブルと列の指定] を設定する必要があります。

    • [削除]
      [選択されたリレーションシップ] ボックスの一覧で選択したリレーションシップを削除します。 追加したリレーションシップを取り消すには、このボタンを使用してリレーションシップを削除します。

    • [全般] カテゴリ
      展開して [作成時または再度有効化するときに既存データを確認] および [テーブルと列の指定] を表示します。

    • [作成時または再度有効化するときに既存データを確認]
      制約を作成した時点、または制約を再度有効にした時点よりも前からテーブルに存在しているすべてのデータについて、その制約に対して検証します。

    • [テーブルと列の指定] カテゴリ
      展開すると、リレーションシップの外部キーおよび主キー (一意キー) として、どのテーブルのどの列が機能しているかわかります。 これらの値を編集または定義するには、プロパティ フィールドの右にある省略記号ボタン ([...]) をクリックします。

    • [外部キーの基本テーブル]
      選択したリレーションシップで、どのテーブルが外部キーとして機能する列を含んでいるかを示します。

    • [外部キー列]
      選択したリレーションシップで、どの列が外部キーとして機能しているかを示します。

    • [主/一意キーの基本テーブル]
      選択したリレーションシップで、どのテーブルが主キー (一意キー) として機能する列を含んでいるかを示します。

    • [主/一意キー列]
      選択したリレーションシップで、どの列が主キー (一意キー) として機能しているかを示します。

    • [IDENTITY] カテゴリ
      展開して [オブジェクト名] および [説明] のプロパティ フィールドを表示します。

    • 名前
      リレーションシップの名前を表示します。 新しいリレーションシップを作成した場合、このプロパティには、テーブル デザイナーのアクティブ ウィンドウのテーブルに基づいて、既定の名前が設定されます。 名前はいつでも変更できます。

    • 説明
      リレーションシップの説明です。 より詳細な説明を記述する場合は、[説明] をクリックしてから、プロパティ フィールドの右に表示される省略記号 ([...]) をクリックします。 これにより、テキストを書くことができる領域が大きくなります。

    • [テーブル デザイナー] カテゴリ
      展開して [作成時または再度有効化するときに既存データを確認] および [レプリケーションに対して適用] に関する情報を表示します。

    • [レプリケーションに対して適用]
      レプリケーション エージェントがこのテーブルに対して挿入、更新、または削除操作を行うときに制約を適用するかどうかを示します。

    • [外部キーの制約を適用]
      リレーションシップの列のデータに対する変更が、外部キー リレーションシップの整合性に違反しているときに、その変更を許可するかどうかを示します。 このような変更を許可する場合には [はい] を、許可しない場合には [いいえ] をクリックします。

    • [INSERT および UPDATE の指定] カテゴリ
      展開して、そのリレーションシップの [DeleteRule の設定] および [UpdateRule の設定] に関する情報を表示します。

    • [DeleteRule の設定]
      外部キー リレーションシップに関連するデータを持つ行をユーザーが削除しようとした場合の処理を指定します。

      • [動作なし]   削除操作が許可されていないことをユーザーに通知するエラー メッセージが出力され、DELETE がロールバックされます。

      • [重ねて表示]   外部キー リレーションシップに関係するデータを含む行がすべて削除されます。 論理レコードを使用するマージ パブリケーションにテーブルを含める場合、CASCADE は使用しないでください。

      • [Null に設定]   テーブルのすべての外部キー列が null 値を使用できる場合、null 値が設定されます。

      • [既定値の設定]   テーブルのすべての外部キー列に既定値が定義されている場合、既定値が設定されます。

    • [UpdateRule の設定]
      外部キー リレーションシップに関連するデータを持つ行をユーザーが更新しようとした場合の処理を指定します。

      • [動作なし]   更新操作が許可されていないことをユーザーに通知するエラー メッセージを出力し、UPDATE がロールバックします。

      • [重ねて表示]   外部キー リレーションシップに関係するデータを含む行がすべて更新されます。 論理レコードを使用するマージ パブリケーションにテーブルを含める場合、CASCADE は使用しないでください。

      • [Null に設定]   テーブルのすべての外部キー列が null 値を使用できる場合、null 値が設定されます。

      • [既定値の設定]  テーブルのすべての外部キー列に既定値が定義されている場合、その列に定義されている既定値が設定されます。

  4. [ファイル] メニューの [table name の保存] をクリックします。

[トップに戻る] リンクで使用される矢印アイコン[Top]

Transact-SQL の使用

外部キーを変更するには

Transact-SQL を使用して FOREIGN KEY 制約を変更するには、まず既存の FOREIGN KEY 制約を削除してから、新しい定義を使用して再作成する必要があります。 詳細については、「外部キーのリレーションシップの削除」および「外部キーのリレーションシップの作成」を参照してください。

[トップに戻る] リンクで使用される矢印アイコン[Top]