1

次のような同じフィールドを持つ2つのテーブルがあります。

表A:fname、lname、address、age、email、mobile、website、blog表B:fname、lname、address、age、email

これらのテーブルは両方とも、私のWebサイトのさまざまなモジュールで使用されています。テーブルAで新しい行が追加されたり、既存の行が変更されたりするたびに、テーブルBが自動的に更新されるように、両方のテーブルの最初の5つのフィールドを同期したいと思います。

例えば。

  1. ユーザーがテーブルAに新しいレコードを作成しました。これで、テーブルBもこの新しい情報で更新する必要があります。逆に、ユーザーがテーブルBに新しいレコードを作成した場合は、テーブルAもこの新しい情報で更新する必要があります。

  2. ユーザーがテーブルAのレコードを変更しました。ここで、テーブルBもこの変更された情報で更新する必要があります。逆に、ユーザーがテーブルBの新しいレコードを変更した場合は、テーブルAもこの変更された情報で更新する必要があります。

どうすればこれを達成できますか。トリガーを使用することを考えましたが、無限ループが作成されないため、サーバーエラーが発生します。

4

2 に答える 2

0

これらの5つのフィールドのうち、一意であることが保証されているフィールドはありますか?テーブルにレコードを挿入する前に、トリガーに条件を追加して、そのフィールドが存在するかどうかを確認できます。

デザインも考え直したほうがいいかもしれません。重複したレコードを2か所に保存するのは少し怖いようです。更新、挿入、および削除のトリガーが必要になります。

于 2012-04-28T06:38:47.260 に答える
0

他のテーブルが更新された場合に備えて 1 つのテーブルを更新する必要がある場合は、(他のテーブルの一部として) テーブルを作成する代わりに、テーブルに似ているが仮想 (実際ではない) のビューを作成します。
しかし、両方の更新を要求したためです。

私が信じているのは、この問題の少し前に戻る必要があるということです....そして、他のテーブルに従って両方のテーブルを更新する必要がある理由を教えてください
.必要なし。

そこで、2 つのテーブルを作成せずに実行できるか、または部分的な列要件に対して 1 つのテーブルと 1 つのビューを作成するなどの方法で実行できるかどうかを考えてみてください。

それはあなたの問題に対する答えではありませんが、私はあなたの問題を最適化された方法で解決しようとしています. :)

于 2012-04-28T07:35:00.970 に答える