2009-04-28 5 views
0

저장 프로 시저의 트랜잭션이 다른 사용자가 테이블을 업데이트하지 못하도록 잠금을 설정합니까?저장 프로 시저 (잠금/롤백)의 mysql 트랜잭션

도 명시 적으로 롤백 논리에 넣을 필요가 없으며 커밋 명령에 도달하지 않았기 때문에 오류가 발생하면 트랜잭션이 자동으로 롤백됩니다.

답변

0

저장 프로 시저의 트랜잭션이 다른 사람이 테이블을 업데이트하지 못하도록 잠금을 설정합니까?

당신이 InnoDB 테이블에 일부 DML을 수행

가 영향을받는 행이 트랜잭션이 끝날 때까지 잠겨 얻을 (이 저장 프로 시저 내부 또는 아니다 중요하지 않습니다).

잠긴 행을 잠근 동일한 트랜잭션 내부에서 수정할 수 있습니다.

명시 적으로 일부 행을 잠 그려면, 문제 : 커밋 또는 트랜잭션을 롤백을 제외하고

SELECT * 
FROM table 
WHERE condition 
FOR UPDATE 

내가 명시 적으로 넣어해야합니까 행 잠금을 해제 할 다른 방법이 없습니다 롤백 논리를 사용하거나 커밋 명령에 도달하지 않아 오류가 발생하면 트랜잭션이 자동으로 롤백됩니다.

명시 적으로 롤백을 수행해야합니다.

+0

나는 내가 그 트랜잭션의 기간 동안 잠긴 상태를 유지할 것인지 묻고있는 것 같아. 즉, 여러 업데이트가있는 경우 각 업데이트 후에 잠금이 해제되거나 트랜잭션에 있기 때문에 모든 업데이트가 완료된 후에 만 ​​잠금이 해제됩니다. – richs

+0

잠금은 트랜잭션이 끝날 때까지 유지됩니다. 잠금의 전체 지점입니다. :) – Quassnoi

관련 문제