1. ホーム
  2. sql

[解決済み] 2つのデータベース間に外部キー関係を追加する

2022-11-08 17:20:58

質問

2つの異なるデータベースに2つのテーブルがあります。テーブル1(データベース1)には、column1というカラムがあり、それはプライマリキーです。今、テーブル2(データベース2)にはcolumn2と呼ばれる列があり、私はそれを外部キーとして追加したいと思います。

追加しようとしたところ、以下のようなエラーが出ました。

Msg 1763, レベル 16, ステート 0, 行 1

データベースをまたがる外部キー参照はサポートされていません。外部キー Database2.table2.

Msg 1750, レベル 16, ステート 0, 行 1

制約を作成できませんでした。以前のエラーを参照してください。

テーブルが異なるデータベースにあるため、どのようにすればよいですか。

どのように解決するのですか?

データベース間の参照制約をトリガーを使用して管理する必要があります。


基本的には、主キーテーブルのキーの存在を確認するために、挿入、更新トリガーを作成します。 キーが存在しない場合、挿入または更新を元に戻し、例外を処理します。

Create Trigger dbo.MyTableTrigger ON dbo.MyTable, After Insert, Update
As
Begin

   If NOT Exists(select PK from OtherDB.dbo.TableName where PK in (Select FK from inserted) BEGIN
      -- Handle the Referential Error Here
   END

END


編集しました。 明確にするためです。 これは参照整合性を強制する最良のアプローチではありません。 理想的には、同じデータベース内の両方のテーブルを使用したいのですが、それが不可能な場合。 しかし、それが不可能な場合、上記はあなたのための潜在的なワークアラウンドです。