jongviet

May 13, 2021 - how to rollback in MySQL / MySQL 롤백하는 방법 본문

MySQL, Oracle

May 13, 2021 - how to rollback in MySQL / MySQL 롤백하는 방법

jongviet 2021. 5. 13. 16:05

*5월13일

-MySQL을 사용하다보면 실수로 특정 테이블의 특정 칼럼을 모두 동일한 값으로 바꾸는 경우가 많다. 오늘도 예제를 연습하다가 하기 이미지와 비슷한 실수를 저질렀다.

-어린 시절 삼국지영걸전과 같은 게임을하며, 매우 아슬아슬 한 시기에 '여기서 저장하기'와 같은 기능을 사용한 적이 많다. 이게 마치 savepoint를 설정하는 느낌인 것 같긴한데, 정확하게 그 기능인지는 모르겠다.

-실제 실무상 rollback을 자주 사용하는지는 잘 모르겠다.... 좀 더 경험이 쌓이고 이 포스팅을 다시 보면 어떤 느낌일지 궁금하다.

 

1)기존 데이터

 

테이블의 sal, hiredate column의 모든 row를 king row의 데이터로 잘못 업데이트한 경우

 

*MySQL rollback process

-그래서 찾아본 rollback 방법!

-먼저 rollback을 위해서는 mysql의 autocommit를 비활성화 해야한다. (0 = false, 1 = true)

 

select @@autocommit; //조회
set autocommit=0; //변경

 

-그 후 보존하고 싶은 특정 테이블 저장 형태를 savepoint 설정한다! deptno가 20인 모든 데이터의 ename을 kim으로 업데이트하고, 그 데이터들의 sal를 3천씩 올린 후 savepoint A라고 설정하겠다.

 

update sam03 set ename = 'kim' where deptno=20;

update sam03 set sal = sal + 3000 where ename='kim';
savepoint A;

savepoint A로 설정

-추가적인 수정을 한 후, rollback을 통해 savepoint A로 돌아가보도록 하겠다.

 

update sam03 set sal = sal + 10000 where ename='kim';

select * from sam03;

 

sal + 10000

 

rollback to savepoint A;

select * from sam03;

 

rollback을 통해 savepoint A로 복구!

Comments