Sunday, June 7, 2009

[정보공유] MySql의 Transaction의 주의점

[정보공유]

MSSql이나 Oracle은 Begin Transaction이 Stack처럼 움직이는 반면.

MySql의 Start Transaction은 Stack처럼 움직이는 것이 아니라 Flag가 서 있는 것처럼 움직이므로 중첩되지 않음.

다음과 같은 쿼리에서 주의할 것.
UpdateSomeTable set AField = 0;

Start Transaction;
UpdateSomeTable set AField = 1;
call usp_AProcedure /* <-- 이 안에서 커밋 */
RollBack;

이때 마지막의 RollBack해도 AField의 값은 0으로 돌아오지 않음.

No comments: