個別のデータベースでの参照整合性の強制
この記事では、異なるデータベースに存在するテーブル間に外部キー関係を作成する問題について説明します。 データベース間で外部キー制約を直接確立することは通常、データベース システムではサポートされていないため、エラーが発生します。
データベース間の参照整合性のためのトリガーの活用
実際的な解決策には、データベース トリガーの使用が含まれます。 トリガー (特に INSERT
トリガーと UPDATE
トリガー) を実装すると、挿入または更新操作を許可する前に、対応する主キーが関連テーブルに存在するかどうかを確認できます。主キーが見つからない場合、トリガーはアクションを阻止し、結果として生じるエラーを処理できます。
トリガーの実装例
以下はトリガーの実装を示しています:
<code class="language-sql">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 Integrity Violation Here (e.g., RAISERROR, ROLLBACK) END END;</code>
重要な考慮事項
トリガーは回避策を提供しますが、参照整合性を強制するための理想的な方法ではありません。 ベスト プラクティスは、引き続き同じデータベース内に関連するテーブルを保持することです。 ただし、これが不可能な場合、トリガーはデータベース間の参照制約を管理するための堅牢なメカニズムを提供します。 データの一貫性を維持するには、トリガー内で慎重にエラーを処理することが重要です。
以上がトリガーはどのようにして別々のデータベース内のテーブル間の参照整合性を維持できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。