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;을 날리고 꺼야한다.
그렇지 않으면 반영 안된다.
'DEVELOP' 카테고리의 다른 글
[javascript & jQuery] 현재 연도, 월, 일, 시간 가져오기 (0) | 2020.06.03 |
---|---|
[mysql] Create, Insert, Select (0) | 2020.06.01 |
[publishing] display: flex로 list 가변 처리 (0) | 2020.05.08 |
[plugin] Swiper 현재 액션 값 담기 (0) | 2020.04.22 |
[php] li에 디자인 입히기 (0) | 2020.04.17 |