0

ブログを作成しているときに、トリガーを使用すると、カテゴリテーブル内にカウンターを維持しながら、投稿を追加および削除するのに便利な方法であると判断しました。カテゴリテーブルのカウンタをインクリメントおよびデクリメントするための2つのトリガーは次のとおりです。

delimiter |
CREATE TRIGGER increment_category_count AFTER INSERT ON posts
  FOR EACH ROW BEGIN
    UPDATE categories SET count = count + 1 WHERE id = NEW.category_id;
  END;
|
delimiter ;

delimiter |
CREATE TRIGGER decrement_category_count AFTER DELETE on posts
  FOR EACH ROW BEGIN
    UPDATE categories SET count = count - 1 WHERE id = OLD.category_id;
  END;
|
delimiter ;

投稿の挿入または削除中に問題が発生すると、カウンターが不正確になるのではないかと心配しています。何かがうまくいかない場合にトリガーでロールバックを実行できるようにするMySQLに何かがありますか?

4

1 に答える 1

0

トリガーで行われた変更は、トリガーを起動したトランザクションでロールバック (またはコミット) されます (テーブルに InnoDB を使用していると仮定します)。

于 2012-07-12T19:44:31.717 に答える