特定のシフトに割り当てられた従業員数を追跡するテーブルがあります。ユーザーがシフトに割り当てられるたびに、トリガーはhave
列を 1 つ増やしてテーブルを更新します。(これはパフォーマンスの問題によるものです)
トリガーは挿入後に起動します。しかし、ユーザーが削除されたときにトリガーする必要もあります。基本的に同じことをする 2 つのトリガーを使いたくありませんでした。
とにかく、手順を使用せずにこれを達成するには?
いいえ、ストアド プロシージャと 2 つのトリガーを使用したくないということは達成できません。MySQL では、トリガーは次のように定義されているため、1 つのtrigger_timeとtrigger_eventにのみアタッチできます。
trigger_time: { BEFORE | AFTER }
trigger_event: { INSERT | UPDATE | DELETE }
したがって、いずれにしても 2 つのトリガーが必要であり、それらのコードを繰り返したくない場合は、ストアド プロシージャを使用する必要があります。ストアド プロシージャを使用したくないので、問題に対する許容できる解決策はないと思います。
トリガーは、テーブルと特定のイベント (挿入、更新、削除) に関連付けられています。AFTER INSERT と AFTER DELETE の 2 つのアクションがあるため、2 つのトリガーが必要です。