Building value

Oracle SQL 기본 문법[TCL.트랜잭션] 본문

RDBMS/Oracle DB

Oracle SQL 기본 문법[TCL.트랜잭션]

developer_Michael 2023. 3. 17. 17:38
반응형

TCL (Transaction Control Language)은 데이터베이스의 트랜잭션을 관리하는 명령어입니다.

 

TCL 명령어는 트랜잭션의 시작과 종료, 롤백, 커밋 등을 제어합니다.

 

대표적인 TCL 명령어로는 COMMIT, ROLLBACK, SAVEPOINT 등이 있습니다.

 

1. COMMIT

 

COMMIT은 트랜잭션에서 수행한 작업을 데이터베이스에 영구적으로 저장하는 명령어입니다. 

 

COMMIT을 실행하면 트랜잭션에서 수행한 모든 변경사항이 데이터베이스에 반영되며, 해당 트랜잭션이 종료됩니다.

DELETE FROM EMP;
COMMIT;

위 SQL 문에서 첫 번째 줄은 EMP 테이블에서 레코드를 삭제하겠다는 것을 나타내며, 

 

두 번째 줄의 COMMIT 명령어는 이 작업을 영구적으로 저장하겠다는 것을 나타냅니다.

 

2. ROLLBACK


ROLLBACK은 트랜잭션에서 수행한 작업을 취소하고 이전 상태로 되돌리는 명령어입니다. 

 

ROLLBACK을 실행하면 트랜잭션에서 수행한 모든 변경사항이 취소되며, 해당 트랜잭션이 종료됩니다. 

 

예를 들어, 다음과 같은 SQL 문을 실행하면 EMP 테이블에서 모든 레코드가 삭제되지만, 

 

ROLLBACK 명령어를 실행하면 이 작업이 취소됩니다.

DELETE FROM EMP;
ROLLBACK;

 

3. SAVEPOINT

 

SAVEPOINT는 트랜잭션 내에서 작은 단위로 롤백할 수 있는 지점을 설정하는 명령어입니다. 

 

즉, SAVEPOINT를 사용하면 트랜잭션 내에서 여러 개의 저장 지점을 설정하고, 

 

필요한 경우 해당 저장 지점으로 롤백할 수 있습니다.

SAVEPOINT before_update;
-- 10번 부서에 속한 모든 사원의 급여를 10% 인상
UPDATE EMP SET SAL = SAL * 1.1 WHERE DEPTNO = 10; 
-- 작업 완료 후 Commit
COMMIT;
-- 오류 발생!!!
ROLLBACK TO before_update;

위 쿼리에서는 먼저 SAVEPOINT 명령어를 사용하여 "before_update"라는 이름의 저장 지점을 설정합니다. 

 

그리고, UPDATE 문을 사용하여 10번 부서(DEPTNO=10)에 속한 모든 사원의 급여를 10% 인상시킵니다. 

 

이후, 작업이 완료되면 COMMIT 명령어를 사용하여 트랜잭션을 종료합니다.

 

만약, 작업 중에 오류가 발생하여 이전 상태로 되돌려야 하는 경우, 

 

SAVEPOINT 명령어를 사용하여 설정한 "before_update" 저장 지점으로 롤백하면 됩니다.

반응형

'RDBMS > Oracle DB' 카테고리의 다른 글

Oracle SQL 기본 문법[CONSTRAINT(2)]  (0) 2023.03.17
Oracle SQL 기본 문법[CONSTRAINT(1)]  (0) 2023.03.17
Oracle SQL 기본 문법[DELETE]  (0) 2023.03.17
Oracle SQL 기본 문법[UPDATE]  (0) 2023.03.16
Oracle SQL 기본 문법[INSERT]  (0) 2023.03.16