트랜잭션
- 모든 구문이 성공 OR 모든 구문 실패
- 은행 송금 예시
- 원자성 (atomicity)
-- 트랜잭션 시작
START TRANSACTION;
DELETE FROM sections
WHERE section_id > 0;
SELECT * FROM sections;
-- 롤백
-- 일련의 작업들을 한다음 문제가 생겼을 때 실제로 반영하지 않고 다시 백지화
ROLLBACK;
SELECT * FROM sections;
COMMIT
메모리상의 변화를 영구저장
START TRANSACTION;
INSERT INTO sections
(section_name, floor)
VALUES ('동남아', 2);
SELECT * FROM sections;
ROLLBACK;
SELECT * FROM sections;
START TRANSACTION;
INSERT INTO sections
(section_name, floor)
VALUES ('동남아', 2);
SELECT * FROM sections;
-- 커밋
-- 커밋한 이후에는 롤백이 소용없다.
COMMIT;
ROLLBACK;
SELECT * FROM sections;
SAVEPOINT
롤백할 중간지점 설정
START TRANSACTION;
INSERT INTO sections
(section_name, floor)
VALUES ('인도식', 2);
-- 롤백할 지점 설정
SAVEPOINT indian;
INSERT INTO sections
(section_name, floor)
VALUES ('남미식', 3);
SELECT * FROM sections;
ROLLBACK TO indian;
SELECT * FROM sections;
COMMIT;
'프로그래밍 강의 메모 > 갖고노는 MySQL 데이터베이스 by 얄코' 카테고리의 다른 글
MySQL 더 깊이 알아가기 > 사용자와 권한 다루기 (0) | 2022.05.05 |
---|---|
MySQL 더 깊이 알아가기 > 인덱스 - 검색을 빠르게! (0) | 2022.05.04 |
MySQL 더 깊이 알아가기 > 뷰 - 가상의 테이블 (0) | 2022.05.04 |
MySQL 더 깊이 알아가기 > 기본키와 고유키, 그리고 외래키 (0) | 2022.05.04 |
데이터 조작하기 > 데이터 변경, 삭제하기 (0) | 2022.05.04 |