DB/MYSQL
TRANSACTION (트랜잭션) 사용하기
minjoony
2020. 1. 16. 11:35
728x90
MYSQL을 통해 DB를 만지던 중 알게된 Transaction.
보통 mysql:workbench 등의 Tool을 이용하여 DB를 바꿀 때, UPDATE문을 곧바로 사용하곤 한다.
이 때, 실수로 바꾸고자 하는 레코드가 아닌 다른 레코드를 변경해버린다면?
백업해 둔 DB가 있다면 다행이지만 없다면 이는 매우 치명적이다.
따라서 UPDATE와 같이 DB의 내용을 수정, 삭제할 때에는 Transaction(트랜잭션)을 이용하는 것이 좋다!
Transaction 이란?
DB의 내용 및 상태를 변환시키는 기능을 수행하기 위해, 한 번에 모두 수행되어야 할 일련의 작업 단위이다.
Transaction의 성질
- Atomicity (원자성) : 트랜잭션의 작업은 시작되었다면 모두 실행되어 반영되거나 혹은 아예 반영되지 않아야 한다.
- Consistency (일관성)
- Isolation (독립성)
- Durability (지속성)
이 중에서, 원자성에 대한 부가설병을 하자면
- 만약 트랜잭션 내부에 A, B라는 작업 두 개가 있다면 이 트랜잭션이 반영되려면 A, B가 모두 실행되어야 한다.
만일 A는 올바르게 실행되었으나 B가 실패하였다면 이 트랜잭션은 실패하여 반영되지 않아야 한다.
- 사용법
START TRANSACTION
.
.
[실행할 코드부]
.
.
COMMIT
ROLLBACK
- START TRANSACTION : Transaction의 시작을 알린다.
- COMMIT : 실행할 코드부에 error가 없으면 commit을 하여 DB에 해당 변경사항을 적용한다.
- ROLLBACK : 실행할 코드부에 error가 있어서 DB의 내용이 잘못 변경 혹은 삭제된 경우 롤백을 이용해 변경사항을 폐기한다.
728x90