1.개요
- 데이터베이스의 논리적 연산단위
- 한 개 이상의 데이터베이스 조작단위(하나 이상의 SQL구문포함)
- ALL OR NOTHING개념
- 특성 :
- 원자성(atomicity)-정의된 연산이 모두 성공해야함.하나라도 실패시 모두 실행하지 않음.
- 일관성(consistency)-실행전에 내용잘못이 없다면 실행후 데이터베이스의 내용에 잘못이 있으면 안 됨
- 고립성(isolation)-다른 트랜잭션의 영향을 받으면 안 됨
- 지속성(durability)-성공한 트랜잭션이 생신한 데이터베이스내용은 영구적으로 저장
2.COMMIT
COMMIT
- 입력이나 수정한 자료를 저장하고싶을때 COMMIT명령을 내려 저장
(COMMIT전) - BUFFER에만 영향을 받았기에 데이터 변경 이전상태로 복구가능
- 현재 사용자가 SELECT 문장으로 결과 확인 가능
- 다른 사용자는 현재 사용자가 수행한 명령의 결과를 볼 수 없음
- 변경된 행은 잠금(LOCKING)이 설정되어 다른 사용자가 변경할 수없음
(COMMIT후) - 데이터 변경사항이 데이터베이스에 반영
- 이전데이터 영구삭제
- 모든 사용자가 결과 확인가능
- 관련된 행의 잠금이 해제, 다른사용자들이 조작가능
1 | -- 데이터 수정 변경 후 |
AUTO COMMIT(SQL Sever방식)
- DDL,DML이 수행될 때마다 DBMS가 트랜잭션 컨트롤하는방식,
명령이 성공적으로 수행되면 자동으로 COMMTI,
실패하면 ROLLBACK됨
암시적트랜잭션(ORACLE방식)
- 트랜젝션 시작은 DBMS가, 끝은 사용자가 COMMIT, ROLLBACK으로 처리
명시적트랜잭션
- 트랜젝션 시작과 끝을 사용자가 BEGIN TRANSACTION || COMMIT TRANSACTION ,
ROLLBACK TRANSACTION으로 처리
3.ROLLBACK
ROLLBACK
- 데이터 이전상태로 복구, 관련된 행에 대한 잠금이 풀림
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19--데이터 수정 변경 후
ROLLBACK;
```
## 4.SAVEPOINT
### SAVEPOINT
- ROLLBACK이 실행될 저장점을 지정
- 복수저장점 정의가능
- 먼저 정의된 SAVEPOINT로 롤백할 경우 이후 저장된 SAVEPOINT로 되돌릴 수 없음
- DDL문장을 실행하면 자동커밋됨
- DML 명령 후 DDL명령을 입력시 DML, DDL 명령모두 자동커밋
- 데이터베이스 정상종료하면 자동 커밋
- 어플리케이션 이상 종료는 자동 롤백
```sql
SAVEPOINT SVPT1;
ROLLBACT TO SVPT1;
SAVE TRANSACTION SVPT2;
ROLLBACK TRANSACTION SVPT2;