2012-07-16 4 views
6

엔진과 관계없이 (예 : InnoDB 또는 MyISAM)이 "비교 및 교체"문은 항상 원자입니까? : 나는 트랜잭션 및 비 트랜잭션 데이터베이스 테이블 모두와 호환 의사 행 수준 잠금을이 문을 사용하려고하기 때문에InnoDB와 MyISAM의 MySQL의 원자 업데이트

UPDATE tbl_name SET locked=1 WHERE id=ID AND locked <> 1; 

나는이를 부탁드립니다.

이 방법은 recommended for MyISAM이지만이 문서에서는 트랜잭션을 사용하는 것이 좋습니다 때문에 InnoDB에서 작동하는지 여부는 확실하지 않습니다.

+0

링크가 끊어졌습니다. 그러므로이 분리 된 진술의 사용은 불분명하다. –

답변

4

예. InnoDB에서 행은 잠기고 (ID에 고유 인덱스가 있고 업데이트가 모든 행을 잠급니다), 업데이트되고 잠금이 해제됩니다. 명시 적 트랜잭션/자동? 미트가 설정되어 있지 않으면 각 명령문은 자체 트랜잭션에서 실행되지만 여전히 트랜잭션이며 잠금이 수행됩니다.