2012-07-12 2 views
0

블로그를 만드는 동안 트리거를 사용하면 카테고리 테이블 내에 카운터를 유지하면서 게시물을 추가하고 제거하는 편리한 방법이라고 판단했습니다. 여기 증가 내 카테고리 테이블에 카운터를 감소시키는 내 두 개의 트리거는 다음과 같습니다MySQL 트리거가 원 자성 (atomic)인지 어떻게 확인합니까?

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에 뭔가가 있습니까?

답변

0

트리거에서 변경된 사항은 트리거를 실행 한 트랜잭션으로 롤백 (또는 커밋)됩니다 (테이블에 InnoDB를 사용한다고 가정).

관련 문제