MySQL トリガーを使用して挿入イベントと更新イベントを処理する
挿入または挿入時に関連テーブル (「ext_words_count」) を更新する必要性に対処するため。プライマリ テーブル ("ext_words") の更新では、MySQL トリガーを使用できます。
問題の理解
目的は、次のことを行うトリガーを作成することです。
前の試行と条件文
提供されたトリガーは、次を使用して "word_count" を更新しようとしました:
UPDATE ext_words_count SET word_count = word_count + 1 WHERE word = NEW.word;
ただし、このクエリは既存のレコードを更新するだけで、挿入の処理に失敗します。
これに対処するには、トリガー内で条件ステートメントを使用できます。たとえば、次の例では、「ext_words_count」にレコードが存在するかどうかをチェックします。
IF NOT EXISTS (SELECT 1 FROM ext_words_count WHERE word = NEW.word)
この条件に基づいて、トリガーは必要に応じて挿入または更新操作を実行できます。
挿入と更新の両方に対する単一のトリガー
条件ステートメントを使用すると、挿入イベントと更新イベントの両方を処理する単一のトリガーを作成できます:
CREATE TRIGGER update_count AFTER INSERT ON ext_words FOR EACH ROW BEGIN IF NOT EXISTS (SELECT 1 FROM ext_words_count WHERE word = NEW.word) THEN INSERT INTO ext_words_count (word) VALUES (NEW.word); ELSE UPDATE ext_words_count SET word_count = word_count + 1 WHERE word = NEW.word; END IF; END
挿入と更新
「ext_words」の挿入または更新時に、このトリガーにより、「ext_words_count」が必要に応じて更新または挿入されます。テストにより、両方のシナリオが正しく処理されることが確認されています。
以上がイベントの挿入または更新時に、MySQL トリガーを使用して関連テーブルを更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。