◈ TCL◈
• TCL (Transcation Controll Language)
트랜잭션을 제어하는 언어
• 트랜잭션(Transaction)
데이터베이스에서 실행되는 논리적 작업 단위
SELECT, INSERT, UPDATE, DELETE와 같은 연산을 수행하여 데이터베이스의 상태를 변화
시키는 작업의 단위로써 이러한 일련의 작업들이 발생하는 단위를 말함
• 트랜잭션의 특징(ACID)
1. Atomicity(원자성)
-> 트랜잭션이 모두 반영 되던지, 모두 반영되지 않던지 해야 함
-> 트랜잭션의 모든 작업은 반드시 성공 해야하며, 하나라도 에러가 발생할 경우 모든 작업에 대한
트랜잭션이 모두 취소되어야 함
2. Consistency(일관성)
-> 작업의 처리 결과가 항상 일관성이 있어야 함
3. Isolation(독립성)
-> 두 개 이상의 트랜재션이 실행중일 경우 다른 트랜잭션이 실행중인 트랜잭션에 끼어들 수 없음
4. Durability(지속성)
-> 트랜잭션이 성공했다면 결과는 영구적으로 반영되어야 함
• 트랜잭션
• 트랜잭션 성공 시
• 트랜잭션이 실패한다면?
A는 송금 처리되어 1만원이 차감되었으나, 송금 도중 에러가 발생하여 B는 입금을 받지
못하여 잔액이 그대로 임
◈ TCL(COMMIT)◈
• COMMIT
모든 작업을 성공적으로 완료하여 변경된 내용을 데이터베이스에 반영하는 작업
• COMMIT 확인하기 (1)
webuser 계정으로 테이블에 데이터를 추가하고 SELECT로 삽입된 데이터 확인
* 자신이 직접 작업한 내용은 실시간으로 반영된것처럼 보임
• COMMIT 확인하기 (2)
CMD창 열기 -> sqlplus -> webadmin 계정 접속 -> SELECT * FROM webuser.webuser_tb; 입력하여 DBeaver에서 작업한 내용이 데이터베이스에 반영되지 않았음을 확인
• COMMIT 확인하기 (3)
DBeaver로 되돌아와 COMMIT; 수행
• COMMIT 확인하기 (4)
CMD로 다시 되돌아와서 다시 webuser.webuser_tb 조회
◈ TCL(ROLLBACK)◈
• ROLLBACK
작업 진행 도중 에러 또는 문제가 발생하여 현재 작업 내용을 데이터베이스에 반영하지 않고,
마지막 COMMIT 시점으로 되돌림
• ROLLBACK
작업 도중 실수로 DELTE를 잘못 사용하여 전체 데이터가 삭제된 상황이라면
* 자신이 작업한 내용은 모두 삭제된것처럼 보임
CMD에 접속되어 있는 webadmin 계정으로 확인하면 아직 데이터가 잘 보임
* COMMIT을 사용하여 데이터베이스에 반영하지 않았기 때문에
◈ TCL(SAVEPOINT)◈
• SAVEPOINT
세이브 포인트를 만들어 롤백 시 지정한 세이브 포인트로 트랜잭션을 롤백
표현법
-> 저장 시 : SAVEPOINT 포인트명;
-> 사용 시 : ROLLBACK TO 포인트명;
INSERT 후 SP1 이름의 세이브 포인트를 만들어 UPDATE 진행
• 참고
한번 사용 후 SP1 지점으로 다시 되돌릴 수 없음.
만약 다시 되돌리고 싶다면 SAVEPOINT SP1을 한번 더 선언 해주어야 함
• SAVEPOINT
SP1 지점으로 롤백 후 다시 ROLLBACK; 을 입력하게 되면 세이브포인트 지점을 지정하지
않았기 떄문에 마지막 COMMIT 지점으로 롤백됨
오늘은 TCL에 속하는 COMMIT, ROLLBACK, SAVEPOINT에 대해 공부를 진행하였다.
그럼 오늘하루도 화이팅 그럼 20000!!!
'Back-End > Oracle' 카테고리의 다른 글
Oracle ■ SEQUENCE, INDEX (0) | 2024.08.09 |
---|---|
Oracle ■ DCL GRANT, REVOKE (0) | 2024.08.02 |
Oracle ■ DDL ALTER, DROP (0) | 2024.07.29 |
Oracle ■ 데이터베이스 정규화 (1) | 2024.07.26 |
Oracle ■ CREATE (0) | 2024.07.25 |