-
[SQL TCL] 트랜잭션Transaction, 실행Commit, 취소Rollback, 임시저장Savepoint직접 해보기/SQL 2024. 8. 8. 00:49728x90반응형
0️⃣ TCL (Transaction Control Language, 트랜잭션 제어어)
- 트랜잭션 제어어는 DML 명령어를 실행(Commit), 취소(Rollback), 임시저장(Savepoint)할 때 사용하는 명령어입니다.
- 여기서 트랜잭션(Transaction)이란, SQL 명령어들로 이루어진 논리적인 작업단위입니다.
이때 명령어들은 위에서 언급했듯이 INSERT, SELECT, UPDATE, DELETE와 같은 DML 명령어들로 이루어져 있습니다.
또한 트랜잭션은 더 분할할 수 없는 최소의 작업단위입니다.
실행 취소 임시저장 COMMIT ROLLBACK SAVEPOINT - 모든 작업을 최종 실행함
- 변경된 데이터를 테이블에 영구 반영함- 모든 작업을 되돌림=취소함
- 따라서 데이터 변경 이전 상태로 복구됨- ROLLBACK 지정점을 정함
- 현시점에서 임시저장점까지
트랜잭션 일부만 취소할 수 있게 해줌
1️⃣ 트랜잭션 취소 :: ROLLBACK
- 트랜잭션의 시작은 아래와 같이 BEGIN 명령어로 선언합니다.
- 트랜잭션을 취소 = BEGIN 아래에 포함된 모든 작업/명령어들을 취소하고 되돌리려면, ROLLBACK 명령어를 사용합니다.
트랜잭션 시작하고
테이블에 데이터 추가트랜잭션 취소(ROLLBACK) 해서
추가했던 데이터 제거됨
2️⃣ 트랜잭션 실행 :: COMMIT
- 트랜잭션을 실행 = BEGIN 아래에 포함된 모든 작업/명령어들을 실행하고 결과를 반영하려면, COMMIT 명령어를 사용합니다.
트랜잭션 시작하고
테이블에 데이터 추가트랜잭션 실행(COMMIT) 해서
데이터 추가 반영됨
3️⃣ 임시저장 :: SAVEPOINT
- SAVEPOINT 명령을 사용하여, 트랜잭션 중간중간에 임시저장점을 만들 수 있습니다.
- 임시저장점을 만들면 트랜잭션 전체를 취소(ROLLBACK)하지 않고,현 시점에서 임시저장점까지의 일부만 취소할 수 있습니다.
- 다만, 임시저장점이 여러개인 경우!
한번 과거의 저장점으로 취소(ROLLBACK)하고 난 뒤엔, 그 이후 시점의 저장점으로 취소할 수 없게 됩니다.
다시 말해서, 특정 저장점까지 취소하면 그 이후의 저장점들은 무효가 된다는 점.. 유의해야 합니다. - 아래 예시를 보면, S2로 한번 롤백하고 나니 S3로 롤백할 수 없게 되었습니다.
트랜잭션 시작
→ 데이터 삽입하고 임시저장점 S1
→ 데이터 수정하고 S2
→ 데이터 삭제하고 S3S2 지점으로 롤백 이후 S3 지점은 무효가 되어
롤백 불가능S1 지점은 S2 이전이므로
롤백 가능
참고1: boostcourse 강좌 (기초 데이터 분석을 위한 핵심 SQL)
728x90반응형'직접 해보기 > SQL' 카테고리의 다른 글
[MySQL] 서브쿼리Subquery 활용해 데이터 조회하기 (0) 2024.08.10 [MySQL] 조인JOIN 으로 테이블 결합하기 (INNER JOIN, LEFT JOIN, RIGHT JOIN (0) 2024.08.10 [MySQL] SELECT문으로 데이터 조회하기 (FROM, WHERE, GROUP BY, HAVING, SELECT, ORDER BY) (0) 2024.08.09 [SQL DML] SQL 데이터 삽입INSERT, 조회SELECT, 수정UPDATE, 삭제DELETE (0) 2024.08.07 [SQL DDL] SQL 테이블 생성CREATE, 수정ALTER, 삭제DROP (0) 2024.08.07