자격증/SQLD - 취득완료

[AUTO COMMIT] - DDL, 트랜잭션

Ch's Lee 2025. 6. 20. 13:07

DDL문은 자동 Commit이 들어있다.

하지만, 툴(TOOL)마다 설정하는 부분이 존재한다.

 

 

 

/* 1.트랜잭션 / 2.데이터사전 / 3.인덱스 / 4.시퀀스
 [ 1. 트랜잭션 ]
- 트랜잭션은 데이터 처리에서 논리적인 하나의 작업 단위를 의미한다.
- ALL or Nothing : 여러개의 명령어 집합이 정상적으로 처리되면 정상종료하고,
                            명령어들중 하나라도 잘못된다면 전체를 취소한다.
- DML 작업이 성공적으로 처리되었다면 COMMIT을, 
         취소해야 한다면 ROLLBACK 명령을 실행한다.
         ROLLBACK : COMMIT 후에 취소가 되지 않는다.
         
- DDL(테이블생성, 수정), DCL(권한)문이 실행되는 경우에는 자동으로 COMMIT 된다. COMMIT 할 필요 없다.
- COMMIT - 트랜잭션의 처리과정을 반영하여 변경된 내용을 영구저장한다. 모든 작업들의 정상처리확정 명령어다.
           INSERT, UPDATE, DELETE(즉 DML) 후 COMMIT을 해야 한다. 
           
- LOCK : 특정 세션에서 조작중인 데이터는 트랜잭션이 완료(COMMIT, ROLLBACK)되기 전까지 다른 계정에서 
         조작할 수 없도록 접근을 보류시키게 된다. 즉 데이터가 '잠금현상'이 일어난다.
         트랜잭션이 완료(COMMIT, ROLLBACK)가 되면 LOCK이 풀리게 된다.
         
         주의 : WHERE절을 지정하지 않은 UPDATE, DELETE문일 경우에는 테이블의 모든행이 LOCK 상태가 된다.
           
- DBeaver 툴에서는 savepoint가 작동안됨           
- SAVEPOINT - 현재의 트랜잭션을 작게 분할한다. 대소문자 구별함
   저장된 SAVEPOINT는 ROLLBACk TO SAVEPOINT 문을 사용하여 표시한 곳까지 롤백할 수 있다.
  1) SAVEPOINT S1;   -- S1 : SAVEPOINT명
     SAVEPOINT S2;   -- S2 : SAVEPOINT명0
  2) ROLLBACk TO S1;   -- S1 : SAVEPOINT명
*/