DBMS transaction.sql 활용

으누·2024년 8월 30일
1
post-thumbnail

transaction.sql

트랜잭션 ( transaction )

- 데이터베이스 내에서 하나의 그룹으로 처리되어야 하는 명령문들을 모아 놓은 작업 단위입니다

- 여러개의 데이터베이스 작업을 하나의 작업 단위로 묶어 처리하며,

모든 작업이 성공적이면 완료 처리하거나,

하나라도 실패할 경우에는 취소하여 이전 상태로 되돌립니다.

  • 특징 (ACID 속성)

    원자성 ( Atomicity)
    : 트랜잭션 내외 모든 작업은 하나로 처리해서, 모두 성공하거나 실패해야 합니다
    일관성( Consistency )
    : 트랜잭션이 완료되면 데이터베이스는 일관된 상태를 유지해야 합니다
    격리성( Isolation )
    : 동시에 실행되는 트랜잭션은 서로 영향을 주지않아야 합니다
    지속성( Durability )
    : 트랜잭션이 성공적으로 완료되면 해당 결과는 영구적으로 반영되어야 합니다.

    트랙재션 명령어

- COMMIT

ROLLBACK

SAVEPOINT

COMMIT

- 모든 작업을 정상적으로 처리하겠다고 확정하는 명령어 입니다.

- 트랜잭션의 처리 과정을 데이터베이스에 반영하기 위해서 변경된 내용을 모두 영구 저장합니다

- COMMIT 을 수행하면 하나의 트랜잭션 과정을 왼료하게 됩니다.

-- 항상 데이터베이스 작업을 할때 백업을 해둡니다!

ROLLBACK

- 작업중 문제가 발생했을 때,

트랜잭션의 처리 과정에서 발생한 변경 사항을 취소하고 트랜잭션 과정을 종료합니다.

- 이전 COMMIT 한 곳까지만 복구됩니다.

-- 연습테이블

DROP TABLE dept01 PURGE;
CREATE TABLE dept01 AS SELECT * FROM dept;
SELECT * FROM dept01;

-- dept01 테이블내용 삭제

DELETE FROM dept01;
SELECT * FROM dept01;

-- ROLLBACK 을 수행해서 데이터 복구

ROLLBACK;

SELECT * FROM dept01;

-- 부선번호 20번 삭제

DELETE FROM dept01
WHERE deptno = 20;
SELECT *FROM dept01;

-- 데이터 삭제한 결과를 영구 저장하기 위해서 COMMIT 수행

COMMIT;

COMMIT 을 수행 하면 영구 저장이 된다

Auto COMMIT

- DDL 문( create, alter, drop, ...) 은 자동으로 COMMIT 을 진행합니다

-- ROLLBACK 명령문을 실행했지만 DDL 문이 먼저 수행되면서, 자동 COMMIT 이 진행되어 복구 되지 않습니다

SAVEPOINT

- 현재의 트랜잭션을 분할 하느 명령어 입니다.

- 트랜잭션 내에 특정 지점을 표시하는 기능으로, 이를 통해서 원하는 지점으로 ROLLBACK 할 수 있습니다.

- 저장된 SAVEPOINT 는 'ROLLBACK TO SAVEPOINT' 문을 사용해서, 표시한 곳까지 ROLLBACK 할 수 있습니다.

- 연습 테이블 생성

DROP TABLE dept01 PURGE;
CREATE TABLE dept01 AS SELECT * FROM dept;
SELECT * FROM dept01;

--40번 부서 삭제 -> COMMIT

DELETE FROM dept01 WHERE deptno=40;
COMMIT;
SELECT * FROM dept01;

-- 20번 부서 삭제 -> SAVEPOINT D20

DELETE FROM dept01 WHERE deptno=20;
SELECT * FROM dept01;
SAVEPOINT D20;

--10번 부서 삭제

DELETE FROM dept01 WHERE deptno=10;
SELECT * FROM dept01;

--ROLLBACK

ROLLBACK TO D20;
SELECT * FROM dept01;

20번은 롤백이 되지 않습니다

profile
코딩 일기장

0개의 댓글