Transaction

- 트랜잭션은 데이터베이스의 논리적인 단위이다.

-하나의 트랜잭션에는 하나 이상의 SQL문장이 포함되며, 분할 할 수 없는 최소의 단위이다.

 그렇기 때문에 전부 적용하거나 전부 취소된다.

 즉, 트랜잭션은 'ALL or NOTHING' 이다.

 

 

Transaction 시작과 종료

-DML 명령을 시작한 경우에 TRANSACTION 이 자동으로 시작된다.

 

-사용자가 COMMIT 또는 ROLLBACK 명령을 명시적으로 실행한 경우 종료된다.

 또는 DDL 문장을 실행하는 경우, DCL문장을 실행하는 경우

 사용자가  SQL*PLUS 또는 IQL*PLUS 를 종료한 경우

 하드웨어 고장 또는 시스템 오류 시

 

 

COMMIT

모든 데이터 변경사항을 데이터베이스에 반영시키는 명령어이다.

변경 전의 데이터는 모두 삭제된다.

모든 사용자들이 트랜잭션 종료 후의 결과를 확인할 수 있다.

즉, 현 사용자가 트랜잭션을 종료시키지 않으면 다른 사용자들은 해당 내용을 확인할 수 없다.

 

 

ROLLBACK

모든 데이터 변경사항을 취소하는 명령어이다.

변경 전의 데이터가 복원된다.

모든 사용자들이 트랜잭션 종료 후의 결과를 확인할 수 있다.

트랜잭션이 진행 중이었던 행들에 대한 잠금이 모두 해소되며, 다른 사용자에 의해서 확인 및 변경이 가능해진다.

 

** COMMIT과 ROLLBACK을 입력하지 않는 이상 현재 작성하고 데이터는 트랜잭션이 계속해서 진행중임을 의미한다.

 

INSERT INTO DEPT  VALUES(50, 'AA', 'AA'); --트랜잭션 시작

ROLLBACK ; --트랜잭션종료

INSERT INTO DEPT  VALUES(50, 'AA', 'AA'); --트랜잭션 시작

INSERT INTO DEPT  VALUES(60, 'AA', 'AA');

INSERT INTO DEPT  VALUES(70, 'AA', 'AA');

ROLLBACK; --트랜잭션종료

INSERT INTO DEPT  VALUES(50, 'AA', 'AA'); --트랜잭션 시작

UPDATE DEPT SET LOC = 'AAAAA';

ROLLBACK; --트랜잭션 종료

INSERT INTO DEPT  VALUES(50, 'AA', 'AA'); --트랜잭션 시작

INSERT INTO DEPT  VALUES(60, 'AA', 'AA');

--COMMIT --트랙잭션종료

 

'DataBase > DML' 카테고리의 다른 글

7/2 UPDATE, DELETE  (0) 2021.07.02
7/2 SQL INSERT  (0) 2021.07.02
7/1 SQL DML  (0) 2021.07.01

+ Recent posts