본문 바로가기

DEVELOP

[mysql] 워크벤치 트랜잭션

728x90

workbench로 작업 중인데, SQL SERVER에서 ms-sql에서 사용하는 트렌잭션을 걸려해도 안된다. 

 

물론 mysql에 맞는 트랜잭션이 있는데 구글링해서 그대로 해보아도 안되어서 하이디sql를 깔아보고 했는데 아무리 생각해도 안될리가 없어서 시간이 나서 더 찾아보았다.

 

그랬더니 해당 워크벤치에서 자동 커밋이 여부를 알 수 있는 쿼리 발견!!

 

자동 커밋 여부 알아보기.

해당 쿼리(select @@autocommit)를 실행하면 0 또는 1이 나오는데,

0이면 자동 커밋이 안되고 있음 즉, 트렌잭션이 먹힘

1이면 자동 커밋이 돌고 잇어서 트렌잭션을 해도 이미 그전에 자동 커밋기능으로 커밋이 되어버렸기 때문에 먹히지 않음!!

 

만약 1 일 때 트렌잭션을 걸고 싶으면 설정을 변경해주면 된다.

 

set autocommit = false;

 

후에 다시 오토커밋 여부 조회해보기

 

 

그럼 0으로 결과 값이 나올 것이다. 

 

추가로 워크벤치에서 mysql transaction 하는 방법을 알아보겠다. 

 

참고로, DDL(CREATE, ALTER, DROP)은 트랜잭션이 적용되지 않는다.

 

1. start transaction;

 

2. DML(SELECT, INSERT, UPDATE, DELETE) 중 INSERT, UPDATE, DELETE 쿼리를 실행

 

3. 쿼리 실행후 해당 테이블 조회

 

4. 되돌리고 싶으면

rollback;

 

5. 적용을 원하면

commit;

 

* 주의사항 : 해당 글에서 autocommit을 off(0) 해놓았기 때문에 반드시 반영하고자 할 경우 commit;을 날리고 꺼야한다.

그렇지 않으면 반영 안된다.