sql >> データベース >  >> RDS >> Mysql

異なるデータベース間で外部キー制約を維持する方法は?

    標準のMySQLでこれを行う方法は考えられません。

    MySQLプロキシ のプラグインを作成できます。 、異なるサーバー上の親テーブルと子テーブル間の参照整合性を管理します:

    • インターセプトINSERT およびUPDATE 子テーブルに対して。親テーブルの一致する行をクエリします。 INSERTに失敗する / UPDATE 親テーブルに一致するものが見つからない場合。

    • インターセプトDELETE 親テーブルに対して。子テーブルの依存行をクエリします。 DELETEに失敗する 子テーブルに依存行が見つかった場合。制約がカスケード動作をサポートすることを目的としている場合は、失敗するのではなく、それを実行してください。

    • インターセプトUPDATE 親テーブルに対して。更新の一部として主キーの値が変更されている場合は、子テーブルで見つかった依存行をクエリします。 UPDATEに失敗する 子テーブルに依存行が見つかった場合。制約がカスケード動作をサポートすることを目的としている場合は、失敗するのではなく、それを実行してください。

    MySQLプロキシプラグインの参照整合性制約に関する情報を保持する必要があることに注意してください(または、関係を記録するプラグインのカスタム構成ファイルを作成します)。従来のFOREIGN KEYは使用できません MySQLインスタンス全体でそのような制約を宣言する構文。



    1. 他のテーブルに存在しないすべてのレコードをカウントします-SQLクエリ

    2. MySQLのGROUP_CONCAT()関数

    3. PgbackrestRestoreおよびRestoreDelta

    4. ハイブリッドクラウドセットアップでのMariaDBの実行