DB/오라클(Oracle)

오라클 TCL(COMMIT, ROLLBACK, SAVEPOINT)

푸코잇 2023. 11. 21. 00:10
728x90
TCL이란?

 

TCL(Transaction Control Language)은 트랜잭션 제어를 위해 사용한다.

여기서 말하는 트랜잭션은 데이터 처리의 한 단위이다.

즉, 다수의 SQL문을 하나의 논리적인 작업 단위로 보는것이다.

 

트랜잭션 특성

 

  • 원자성(Automicity) : 트랜잭션에 정의된 연산들은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않은 상태로 남아 있어야 한다. (= All or Nothing)
  • 일관성(Consistency) : 트랜잭션이 실행되기 전의 데이터베이스 내용이 잘못되어있지 않다면 실행된 이후에도 데이터베이스 내용에 잘못이 있으면 안 된다.
  • 고립성(Isolation) : 트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안 된다.
  • 지속성(Durability) : 트랜잭션이 성공적으로 수행되면 갱신한 데이터베이스의 내용은 영구적으로 저장된다.

 

COMMIT

 

저장되지 않은 모든 데이터를 데이터베이스에 저장하고 현재의 트랜잭션을 종료한다.

 

-- TBL_STUDENT 테이블에 데이터 추가
INSERT INTO TBL_STUDENT VALUES (4, '학생4', '컴퓨터공학과', 'W');
INSERT INTO TBL_STUDENT VALUES (5, '학생5', '컴퓨터공학과', 'W');

-- 추가한 데이터 COMMIT
COMMIT;

 

  • 실행결과

 

ROLLBACK

 

저장되지 않은 모든 데이터 변경 사항을 취소하고 현재의 트랜잭션을 종료한다.

-- DELETE문을 통해 ID가 4인 데이터 삭제
DELETE FROM TBL_STUDENT WHERE ID = 4;

-- DELETE 수행 전으로 롤백
ROLLBACK;

 

 

SAVEPOINT

 

트랜잭션을 전체 롤백하지 않고 특정 지점으로 롤백한다.

DELETE FROM TBL_STUDENT WHERE ID = 4;

-- SAVEPOINT 지정
SAVEPOINT A;

DELETE FROM TBL_STUDENT WHERE ID = 3;

SELECT * FROM TBL_STUDENT;

-- SAVEPOINT A로 롤백
ROLLBACK TO A;

-- SAVEPOINT A로 롤백 후 문제없다면 COMMIT
COMMIT;

 

참고하면 좋은 포스팅

 

 

오라클 DML(INSERT, SELECT, UPDATE, DELETE)

DML이란? DML(Data Manipulation Language)은 데이터 조작어이다. 종류로는 INSERT(데이터 삽입), SELECT(데이터 조회), UPDATE(데이터 수정), DELETE(데이터 삭제)가 있다. 예제용 테이블(TBL_STUDENT) 생성 CREATE TABLE TBL

foco.tistory.com

 

 

오라클 DDL(CREATE, ALTER, RENAME, TRUNCATE, DROP)

DDL이란? DDL(Data Definition Language)은 데이터 정의어로 테이블 조작 및 제어 관련 쿼리문이다. 종류로는 CREATE, ALTER, RENAME, TRUNCATE, DROP이 있다. 명령어를 수행하자마자 자동 COMMIT이 되어 바로 반영되는

foco.tistory.com