1. COMMIT
-
COMMIT은 INSERT, UPDATE, DELETE문으로 변경한 데이터를 데이터베이스에 반영함
-
변경 전 이전 데이터는 잃어버림
-
다른 모든 데이터베이스 사용자는 변경된 데이터를 볼 수 있음
-
COMMIT이 완료되면 데이터베이스 변경으로 인한 LOCK이 해제 됨(UNLOCK)
-
COMMIT이 완료되면 다른 모든 데이터베이스 사용자는 변경된 데이터를 조작할 수 있음
-
COMMIT을 실행하면 하나의 트랜잭션 과정을 종료 함
-
Oracle 데이터베이스는 암시적 트랜잭션 관리를 함
-
즉, Oracle 데이터베이스로 트랜잭션을 시작하고 트랜잭션의 종료는 Oracle 데이터베이스 사용자가 COMMIT혹은 ROLLBACK으로 처리 해야 함
*Auto commit
-
SQL*PLUS 프로그램을 정상적으로 종료하는 경우 자동 COMMIT됨
-
DDL 및 DCL을 사용하는 경우 자동 COMMIT됨
-
“set autocommit on,”을 SQL*PLUS에서 실행하면 자동 COMMIT됨
2. ROLLBACK
-
ROLLBACK을 실행하면 데이터에 대한 변경 사용을 모두 취소하고 트랜잭션을 종료함
-
INSERT, UPDATE, DELETE문의 작업을 모두 취소함(단, 이전에 COMMIT한 곳까지만 복구함)
-
ROLLBACK을 실행하면 LOCK이 해제되고 다른 사용자도 데이터베이스 행을 조작할 수 있음
3. SAVEPOINT
-
SAVEPOINT는 트랜잭션을 작게 분할해 관리하는 것으로 SAVEPOINT를 사용하면 지정된 위치 이후의 트랜잭션만 ROLLBACK 할 수 있음
-
SAVEPOINT의 지정은 SAVEPOINT <SAVEPOINT명>을 실행함
-
지정된 SAVEPOINT까지만 데이터 변경을 취소하고 싶은 경우는 “ROLLBACK TO<SAVEPOINT명>”을 실행함
-
“ROLLBACK”을 실행하면 SAVEPOINT와 관계없이 데이터의 모든 변경사항을 저장하지 않음
'SQL 공부' 카테고리의 다른 글
(SQLD)계층형 조회(Connect by)/서브쿼리(Subquery) (0) | 2020.09.05 |
---|---|
(SQLD)조인(Join) (0) | 2020.09.03 |
(SQLD)WITH구문/DCL(Data Control Language) (0) | 2020.08.30 |
(SQLD)DECODE와 CASE/ROWNUM과 ROWID (0) | 2020.08.26 |
(SQLD)GROUP 연산/SELECT문 실행 순서/명시형 형변환 암시형 형변환/내장형 함수 (0) | 2020.08.24 |