DB에서
set autocommit true 하면 자동커밋(기본값)
set autocommit false 하면 수동커밋
자동커밋은 쿼리 한 줄을 완료할 때마다 커밋 됨.
편리하지만, 우리가 원하는 commit, rollback의 트랜잭션 기능을 활용할 수는 없다.
예를 들면 5천원 계좌이체 일 때
update member set money = money + ? where member_id = ?;
첫번째 ?가 5천원, 두번째 ?가 A,
update member set money = money - ? where member_id = ?;
첫번째 ?가 5천원, 두번째 ?가 B
이 두개가 완벽히 실행되어야 송금이 이루어 지는 것 이므로,
저거 두개가 완벽히 실행 된 이후에 commit을 하고 싶다는 거다.
커밋을 하려면 그냥
'commit;'
하고 sql을 보내면 된다. 수동커밋 모드로 설정된 상태에서
set autocommit false;
insert into member(member_id, money) values ('data3', 10000);
insert into member(member_id, money) values ('data4', 20000);
commit;
참고로 수동커밋이나 자동 커밋 저렇게 한번 설저아하면 해당 세션에서는 계속 유지됨.
보통 커밋모드는 자동이기 때문에 수동커밋모드로 설정하는 것을 트랜잭션 시작이라고도 표현 하기도 함.
'스프링 > 5. 스프링 DB-1' 카테고리의 다른 글
19. 조회할 때 락 가져오기 (0) | 2023.09.30 |
---|---|
18. DB 락 (0) | 2023.09.29 |
15. 트랜잭션 개념 (0) | 2023.09.28 |
14. DB 연결 구조와 DB 세션 (0) | 2023.09.28 |
13. 트랜잭션 (0) | 2023.09.28 |