mySql입니다.
질문1.
update student set state = 1 where state = 0 order by no asc limit 1;
위와 같이 했을때 업데이트된 레코드의 no를 알 수 없을까요??
질문2.
no를 알아내려고 아래와 같이 코드를 짰습니다.
select no from sudent where state = 0 order by no asc limit 1;
update student set state = state+1 where state = 0 order by no asc limit 1;
이와같은 작업을 수행하는 프로그램이 만개정도 있는데, 낮은 확률로 동시에 select를 수행하면 state를 0으로 인식해서 두 프로그램이 같은 레코드에 update문을 수행합니다.
제가 원하는 결과는 모든 레코드의 state 값은 1인데, 가끔은 state가 2인 값이 있습니다.
트렌젝션을 사용해야 할것 같은데, 어떻게 해야 할까요?
|