トリガー内でトリガーを無効にして再度有効にすることはできますか?
たとえば、2 つの場所のいずれかに配置できるフロントエンド アプリケーションに情報があります。誰かが A の場所に置いたら、B の場所にコピーしたいです。
したがって、私の考えは、異なるテーブルに 2 つのトリガーを配置することです。
これにより、終わりのないループが作成されます (私は推測しますか?) ので、トリガー 2 の実行中にトリガー 1 を無効にし、最後に有効にすることはできますか?
トリガー内でトリガーを無効にして再度有効にすることはできますか?
たとえば、2 つの場所のいずれかに配置できるフロントエンド アプリケーションに情報があります。誰かが A の場所に置いたら、B の場所にコピーしたいです。
したがって、私の考えは、異なるテーブルに 2 つのトリガーを配置することです。
これにより、終わりのないループが作成されます (私は推測しますか?) ので、トリガー 2 の実行中にトリガー 1 を無効にし、最後に有効にすることはできますか?
同じデータベース内の2つのテーブルにデータを複製することは一般的に望ましくないというダミアンのコメントに同意しますが、これを行う正当な理由がある場合は、INSTEAD OF
トリガーの代わりにAFTER
トリガーを使用できます(これは現在見ていると思います)。そうすれば、自分でコーディングして制御するINSERT
2つの別々のシングルを「置き換える」ことができます。INSERTs
または、ループを終了する更新を行う前に、トリガーで情報が変更されたかどうかを確認できますか?
はい、できます:
ALTER TABLE tablename DISABLE TRIGGER triggername
ALTER TABLE tablename ENABLE TRIGGER triggername
ただし、あなたのソリューションでは、両側で同じように実行され、混乱しないほど賢いトリガーを作成します。
つまり、ユーザー/クライアントの INSERT とトリガー 'MOVE' をインテリジェントに区別するトリガーを作成します。