데이터베이스/SQL
[SQL] SQL 기본 (TCL)
Reference M1
2019. 3. 31. 10:05
TCL(Transaction Control Language)
DCL(Data Control Language) 데이터를 제어하는 명령어에서 트랜잭션을 제어하는 명령어인 COMMIT, ROLLBACK, SAVEPOINT 만을 따로 분리해서 TCL 이라고 표현한다.
트랜잭션 개념
- 데이터베이스에서는 데이터의 일관성과 무결성을 보장하기 위해서는 반드시 트랜젝션 관리가 필요하다.
- 트랜잭션이란 데이터베이스 내에서 하나의 그룹으로 처리되어야 하는 명령문들을 모아 놓은 작업 단위이다.
- 예를들어 그룹이 하나 이상의 SQL문장으로 구성되어 있다고 가정할 경우 4개의 SQL문장이 하나의 그룹으로 묶여진 작업단위의 경우 4개의 SQL문장이 완전히 처리되거나 All-OR-Nothing방식으로 처리된다.
1. COMMIT
INSERT INTO USER (USER_ID, USER_NAME, ORG_ID, TEL_NO) VALUES ('U00001','홍길동','000000','01011112222');
COMMIT;
//삽입하고 COMMIT을 통해 테이블에 적용
// UPDATE, DELETE 등도 DML 사용 후 COMMIT; 으로 적용
2. ROLLBACK
UPDATE USER
SET TEL_NO = '00011114444';
ROLLBACK;
// 지난 COMMIT 까지 변경 사항을 취소
3. SAVEPOINT
SAVE SAVEPOINT SVPT1;
INSERT INTO USER (USER_ID, USER_NAME, ORG_ID, TEL_NO) VALUES ('U00001','홍길동','000000','01011112222');
ROLLBACK TO SVPT1;
//SAVEPOINT 를 지정하면 현 시점에서 해당 SAVEPOINT까지 트랜잭션의 일부를 롤백할 수 있다.
//SAVEPOINT 를 여러개를 지정했을 경우에도 해당 SAVEPOINT까지 롤백시킬 수 있으나, 과거의 SAVEPOINT로 갔다가 미래의 SAVEPOINT로 되돌아 올 수는 없다.
//데이터베이스를 정상적으로 종료해도 자동으로 트랜잭션이 커밋. 이상이 있을 경우 자동 롤백.