[DB] MySQL - transaction

양희연·2020년 9월 7일
0

database

목록 보기
8/8
post-thumbnail

Transaction

데이터 처리의 한 단위.
커밋을 하기 전까지 입력한 명령문은 메모리에서만 동작하고 물리적인 하드디스크에 반영하지 않으며, 커밋 작업이 발생하면 그때 하드디스크에 반영된다.

트랜잭션 은 어떤 작업을 수행할 때 작업이 실패하더라도 이 잘못된 작업이 실질적으로 수행해야 할 작업에는 영향을 미치지 않도록 하는 기능이다.

--트랜잭션 시작
start transaction;


> rollback

원래의 형태로 되돌리는 작업
커밋을 한 후에는 적용되지 않는다.

start transaction;
delete from test_table1 where id=10;

--트랜잭션이 선언되기 전 상태로 복원. 트랜잭션 종료
rollback;

--id=10인 row 복원
select * from test_table1;

--다시 transaction 시작
start transaction;

+ save point

save point를 지정하면 rollback 시 지정된 위치로 복원할 수 있다.

start transaction;
update test_table1 set name='Sam' where id=1;

--savepoint 지정
savepoint a;

delete from test_table1 where id=10;

--a지점으로 복원.
rollback to a;

--update만 된 상태
select * from test_table1;



> commit

하나의 트랜잭션을 물리적인 데이터베이스에 적용하는 작업

start transaction;
delete from test_table1 where id=10;

--커밋. 트랜잭션 종료
commit;

--id=10인 row 삭제
select * from test_table1;

💡 trunacate, drop, alter는 자동 커밋되니 사용에 유의해야 한다.

trunacate

테이블의 모든 row를 삭제한다. where절을 사용하지 못한다.
TRUNCATE TABLE 테이블명;



참고자료: 소프트캠퍼스

profile
꾸준히 나아가자!

0개의 댓글