사용 테이블
1.Product

2.Product_new

트렌젝션(Transaction)
●분할이 불가능한 업무처리의 단위
●한꺼번에 수행되어야 할 연산 모음
ex) 은행의 전산
트랜젝션 안의 문구는 하나의 명령어 처럼 처리되며 마지막에 처리를 한번더 할 수 있어 유용하다.
예시를 보자
start transaction
블록안의 명령어들은 하나의 명령어 처럼 처리됨
....
성공하던지, 실패하던지 하나의 결과가 됨
문제가 발생하면 rollback;
정상적인 처리가 완료되면 commit;
문법
commit : 모든 작업들을 정상 처리하겟다고 확정하는 명령어로써, 해당 처리 과정을 DB에 영구적으로 저장
rollback: 작업 중 문제가 발생되어 트렌젹션의 처리 과정에서 발생한 변경사항을 모두 취소하는 명령어
트랜젝션의 특징
- 원자성 : 트렌젝션이 데이터베이스에 모두 반영되던가, 아니면 전혀 반영되지 않아야 함
- 일관성 : 트렌젝션의 작업 처리 결과가 항상 일관성이 있어야 함
- 독립성 : 어떤 하나의 트렌젹선이라도, 다른 트렌젝션의 연산에 끼어들 수 없음
- 영구성 : 결과는 영구적으로 반영되어야 함
예시를 보며 익혀보자
commit 마무리
select *from product;
start transaction;
insert into product values('100005','고철','팔아요',100,now());
select * from product;
commit;
완료후 테이블 상태

rollback 마무리
start transaction;
insert into product values('100006','공병','팔아요','50',now());
select *from product;
rollback;
완료후 테이블 상태

rollback은 저장되지 않고 commit은 수정사항이 저장되었다.
예외
DDL (create, drop, alter, rename, truncate) 에 대해 예외를 적용
--> rollback 적용이 되지 않는 대상이다.
※truncate 란?
개별적으로 행을 삭제할 수 없으며, 테이블 내부의 모든행(데이터)를 삭제
rollback 불가
트렌젝션 로그에 한번만 기록하므로 delete 구문보다 성는 면에서 빠름
문법
truncate table 테이블명 = delete from 테이블명
예시를 보자
●Del로 삭제하엿을때
start transaction;
delete from product_new;
select * from product_new;
rollback;
완료후 테이블 상태

정상적으로 삭제된 데이터가 rollback
●truncate로 삭제하엿을때
truncate table product_new;
select * from product_new;
rollback;
완료후 테이블 상태

데이터가 삭제된후 rollback 되지 않았다.
'코딩공부 > DBMS' 카테고리의 다른 글
| CSS_그룹 선택자 (0) | 2023.03.28 |
|---|---|
| DBMS(MySQL)_인덱스(index) (0) | 2023.03.23 |
| DBMS(MySQL)_뷰(view) (0) | 2023.03.23 |
| DBMS(MySQL)_사용자 설정(사용자 추가,DB권한부여) (0) | 2023.03.23 |
| DBMS(MySQL)_문자열함수 (3) | 2023.03.23 |