[解決済み] 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
編集しました。 明確にするためです。 これは参照整合性を強制する最良のアプローチではありません。 理想的には、同じデータベース内の両方のテーブルを使用したいのですが、それが不可能な場合。 しかし、それが不可能な場合、上記はあなたのための潜在的なワークアラウンドです。
関連
-
[解決済み] INSERT ステートメントが FOREIGN KEY 制約と競合する - SQL Server
-
plsql-stored-procedure ORA-06550 エラー処理
-
[解決済み] T-SQLを使用して外部キー制約を一時的に無効にするにはどうすればよいですか?
-
[解決済み] SQL Serverでレコードを削除した後、IDシードをリセットする。
-
[解決済み] フラットテーブルをツリーにパースする最も効率的/エレガントな方法は何ですか?
-
[解決済み] Entity Framework VS LINQ to SQL VS ADO.NETでストアドプロシージャを使う?[クローズド]
-
[解決済み】SQL Serverで外部キーを作成するにはどうすればよいですか?
-
[解決済み】SQL Serverで外部キーを削除するにはどうすればよいですか?
-
[解決済み] SQL Server でテーブルを参照している FOREIGN KEY 制約を調べるにはどうしたらいいですか?
-
[解決済み】MySQLで外部キー制約を追加できない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Oracleで上位100行を選択する方法は?
-
[解決済み] JOINとINNER JOINの違いについて
-
[解決済み] SQL Serverでシングルクォートをエスケープするにはどうすればよいですか?
-
[解決済み] PostgreSQLからのPL/pgSQL出力をCSVファイルに保存する
-
[解決済み] MySQLでFULL OUTER JOINを行うにはどうすればよいですか?
-
[解決済み] SQL ServerにおけるINSERT OR UPDATEに関する解決策
-
[解決済み] SQLiteデータベースで、一度に複数行を挿入することは可能ですか?
-
[解決済み] "ON UPDATE CASCADE "を使用する場合について
-
[解決済み] SQL/mysql - Select distinct/UNIQUE but return all column?
-
[解決済み] 別のテーブルに一致する項目がない行を選択するにはどうすればよいですか?