Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- FSL
- Emoji
- kernel
- ml
- Dual energy X-ray
- MRI
- ubuntu
- 동차좌표계
- CT
- https
- x-ray
- procedure
- ssl
- 평가지표
- AWS
- Cost Function
- MySQL
- EC2
- coursera
- object detection
- Homogeneous Coordinates
- NRMSE
- git
- nodejs
- relaxation time
- error
- pytorch
- pm2
- Anaconda
- Map-reduce
Archives
- Today
- Total
Pay it Forward
TRANSACTION (트랜잭션) 사용하기 본문
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
'DB > MYSQL' 카테고리의 다른 글
PROCEDURE (프로시져) 도중에 중단하기 (return 0; 사용하기) (0) | 2020.02.25 |
---|---|
PROCEDURE (프로시져) SELECT 결과 변수에 저장하기 (0) | 2020.02.25 |
[Error] You are using safe update mode 에러 해결방법 (0) | 2020.02.14 |
MYSQL에서 문자열 자르기 (String Split) (0) | 2020.02.05 |
PROCEDURE (프로시져) 동적쿼리 (0) | 2020.01.16 |
Comments