본문 바로가기

프로그래밍 강의 메모/갖고노는 MySQL 데이터베이스 by 얄코

MySQL 더 깊이 알아가기 > 트랜잭션 - 함께가 아니면 하지 않아!

https://inf.run/JvXX

 

갖고노는 MySQL 데이터베이스 by 얄코 - 인프런 | 강의

비전공자도 이해할 수 있는 MySQL! 빠른 설명으로 필수개념만 훑은 뒤 사이트의 예제들과 함께 MySQL을 ‘갖고 놀면서’ 손으로 익힐 수 있도록 만든 강좌입니다., - 강의 소개 | 인프런...

www.inflearn.com

트랜잭션

  • 모든 구문이 성공 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;