반응형

'rollback'에 해당되는 글 1건

  1. 2018.01.02 MySQL 트랜잭션.

MySQL 트랜잭션.

MySQL 2018. 1. 2. 11:15
반응형

MySQL 트랜잭션.

 

트랜잭션이란?

여러 단계의 처리를 하나의 처리처럼 다루는 기능을 트랜잭션(transaction)이라고 합니다.

트랜잭션의 실행 결과를 데이터베이스에 반영하는 것을 커밋(commit)이라 하고, 반영하지 않고 원래 상태로 되돌리는 것을 롤백(roll-back)이라고 합니다.

 

트랜잭션 사용하기.

트랜잭션을 시작할 때에는 start transaction 이라는 명령을 사용합니다.

뭔가 작업을 하고 원래 상태로 되돌릴 때는 rollback 명령어를 사용합니다.

작업후 작업한 것을 반영할 때는 commit 명령어를 사용합니다.

 

table_03을 트랜잭션을 시작한 후 삭제 했다가 롤백을 해보겠습니다.

Rollback 이 되어서 무사히 데이터가 복원되었습니다.

 

트랜잭션은 rollback;을 실행한 시점에서 확정됩니다. 다시 한번 테스트를 하려면 반드시 start transaction;으로 트랜잭션을 시작해야 합니다.

 

이번에는 테이블을 삭제한 후 commit; 를 실행해 보겠습니다.

start transaction;

delete from table_03;

commit;

select * from table_03;

위와 같이 commit; 명령 실행한 후 테이블이 비어 있는 것을 확인할 수 있습니다.

 

자동 커밋 기능.

일반적으로 MySQL에서 명령을 실행하면 그대로 반영됩니다. , 사용자가 의식하지 않아도 모든 명령이 자동으로 commit되는 것입니다.

이처럼 명령을 실행하면 그대로 반영하는 기능을 자동 커밋 기능이라고 합니다.

 

자동 커밋 기능을 OFF로 설정하기.

자동 커밋 기능을 off로 하려면, 다음과 같이 set autocommit=0; 이라는 명령을 실행합니다.

set autocommit=0;

insert into table_03 values(‘test’, ‘테스트’, 30);

select * from table_03;

rollback;

select * from table_03;

위에서 보는 것과 같이 자동커밋 기능을 off로 설정해서 rollback; 을 했을 때 원래 상태로 돌아 가는 것을 확인할 수 있습니다.

 

자동 커밋 기능을 on으로 바꾸기.

Off로 설정된 자동 커밋 기능을 원래대로 되돌리는 방법은 다음 명령을 사용하여 자동 커밋 기능을 원래의 기본 설정으로 되돌려 놓습니다.

set autocommit=1;

 

 

자동 커밋 기능의 설정 상태를 확인 명령어.

select @@autocommit;

트랜잭션을 이용할 수 있는 범위.

트랜잭션으로 모든 명령을 롤백으로 되돌릴 수 있는 것은 아닙니다. 다음과 같은 명령은 자동 커밋됩니다.

drop database

drop table

drop

alter table

위의 명령은 트랜잭션을 실행해도 원래의 상태로 되돌릴 수가 없으니 주의해야 합니다.

 

반응형
Posted by 컴스터
,


반응형