Introduction

다른 테이블들과 연계된 작업을 하다가, 예외(예기치 않은 상황)가 발생하여, 실패한다면,이 상황을 어떻게 처리 하는게 좋을까? 일반적인 처리는 모두 성공하거나 모두 실패시키는 것이다. 이런 처리가 왜 일반적이 되었는지는 책에 나와 있지 않으나, 내 생각으로는 생각을 더 하지 않아도 되는 편안함 때문이지 않을까 한다.

이번 장은 SQL 절들을 수행 할 때, 모두 수행 되지 않을 경우, 원래의 상태로 돌리는 트랙잭션 처리에 대해서 정리 한다.

Content

1. 무엇을 "트랜잭션" 이라고 하는가?

트랜잭션이란, 연속된 작업을 뜻한다. 데이터베이스에서 이러한 트랙잭션은 "쪼갤 수 없는 작업 단위"를 뜻한다.

참조 링크

2. 무엇을 "트랜잭션 처리" 라고 하는가?

트랜잭션 처리란, 트랜잭션 처리를 모두 성공/실패를 하기 위한 처리이다. 성공에 대해서는 신경쓸께 없지만, 실패일 경우, 작업중에 건들였던 테이블들을 모두 작업전으로 돌리는 작업이 필요하다. 즉, 되돌리는 작업을 트랜잭션 처리라고 한다.

3. 어떻게 트랜잭션 처리를 하는가?

먼저 트랙잭션 단위를 정하고, 데이터베이스에서 지원해 주는 기능을 이용하여, 되돌리기 작업을 한다.

트랜잭션의 단위는 SQL 서버에선 BEGIN TRANSACTION ~ COMMIT TRANSACTION 으로, PostgreSQL 에선 BEGIN ~ COMMIT 으로 한다. 이 트랙잭션 단위에 있는 SQL은 완전 성공이나 실패가 되어, 아무작업도 안한게 된다.

여기에 실패가 되었을 때, 되돌리는 부분을 정할 수도 있는데, 이때는 ROLLBACK 을 이용한다. 이 ROLLBACK 을 이용하기 위해선 SAVE POINT를 정해 두어야 한다. SAVE POINT 는 각각의 이름을 지정해야 하며, ROLLBACK은 이러한 SVAE POINT 이름을 지정하여, 되돌리는 부분을 정할 수도 있다.

참조 링크

4. 무엇을 트랙잭션 처리 할 수 있는가?

INSERT, UPDATE, DELETE 문만 가능하며, 다른것들은 트랙잭션 처리 되지 않는다.

Digression

각 DBMS 마다 메뉴얼을 참조 하는게 더 좋겠다.


저작자 표시
신고
posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요