如何确保MySQL触发器是原子的?

时间:2012-07-12 19:39:36

标签: mysql sql triggers

在创建博客时,我已经决定使用触发器是一种在类别表中维护计数器的同时添加和删除帖子的便捷方式。以下是我在类别表中递增和递减计数器的两个触发器:

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中是否有某些内容可以让我在触发器中进行回滚?

1 个答案:

答案 0 :(得分:0)

触发器中执行的任何更改都将使用触发触发器的事务回滚(或提交)(假设您对表使用InnoDB)。