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 |