-
SQL_TRANSACTION 개요 & COMMITData Base_Oracle/SQL 2020. 1. 9. 22:35
TRANSACTION
DB에서 data를 관리할 때
여러 개의 SQL명령어를 하나의 논리적인 작업단위로 묶는 것ex) 계좌이체
계좌이체 실패시 출금만 되면 안 되기 때문에
출금과 입금을 하나의 작업으로 다룸TRANSACTION 특징
원자성 All or Nothing
일련의 SQL문장이 전부 실행되거나, 전부 실행되지 않는 경우로 나뉨COMMIT
트랜잭션을 구분함
COMMIT ~ COMMIT 사이의 SQL구문들을 하나의 트랜잭션이라고 할 수 있음- 모든 작업들을 정상적으로 처리 _ DML(insert, update, delete)
- 데이터베이스에 모두 반영됨 → 테이블에 저장
- 변경된 내용을 모두 영구 저장
→ 중간에 값을 변경하지 않는 한 저장된 데이터를 계속해서 유지 - 중간에 되돌릴 수 없음
※ COMMIT하기 전까지의 작업 내용(DML)은 컴퓨터의 메모리에만 올라가 있으며
COMMIT을 완료해야 데이터가 저장됨(사용자 컴퓨터 → 서버 컴퓨터)§ 형식
[ SQL> commit; ]
※ 자동 COMMIT 되는 경우
-
exit
지금까지 작업한 모든 내용을 전부 저장하고 SQL Plus에서 빠져나감
※ exitcommit 환경 변수를 OFF로 설정하면 자동으로 COMMIT 되지 아니함
즉, 자동으로 COMMIT 실행
작업 내용이 원치 않게 전부 날아가 버릴 수 있기 때문에 추천하지는 않음 -
DDL, DCL
Create, Alter, Drop, Grant, Revoke 문장은 자동으로 COMMIT이 됨
즉, ROLLBACK을 사용할 수 없음
※ 동시접속
둘 이상의 SQL Plus를 실행할 때
- 각각의 창에서 실행한 DML은 COMMIT전까지 서로에게 영향을 미치지 못함
- COMMIT을 하는 순간 다른 창에도 작업 내용이 반영됨
- DDL은 바로 적용됨
일련의 SQL문장들을 하나의 논리적인 작업 단위로 다루는 TRANSACTION의 개요를 살펴보고
트랜잭션 구분자라고도 할 수 있는 COMMIT에 대해서 알아보았습니다.COMMIT을 하면 DML작업 내용이 전부 저장되기 때문에 작업 내용을 한 번씩 확인하는 습관이 필요합니다.
'Data Base_Oracle > SQL' 카테고리의 다른 글
SQL_INDEX (0) 2020.01.09 SQL_ROLLBACK & SAVEPOINT (0) 2020.01.09 SQL_ROWNUM & TOP-N 방식 (0) 2020.01.09 SQL_VIEW OPTIONS [WITH READ ONLY] (0) 2020.01.09 SQL_VIEW OPTIONS [WITH CHECK OPTION] (0) 2020.01.09