mysql transaction


트랜잭션을 알아보기 이전에 먼저 엔진을 확인해야 합니다.

MySQL에는 많은 엔진이 있지만 대표적으로 InnoDB와 MyISAM을 사용하고 있는데요

InnoDB인 경우에만 트랜잭션을 사용할 수 있습니다


트랜잭션이란 쉽게 설명해드리면 은행 입출금을 생각해볼 수 있습니다

A라는 사람이 B한데 10만원을 송금하는 과정에서 A계좌에서 -10만원을 하고 B계좌에 +10만원하는 과정에서 오류가 나면 A계좌에만 10만원이 빠져있는 현상이 발생하겠죠

그래서 필요한게 트랜잭션입니다

트랜잭션은 여러 단계의 처리를 하나의 처리처럼 다루는 기능입니다.

트랜잭션의 실행 결과를 데이터베이스에 반영하는것을 커밋(commit), 다시 이전으로 되돌리는 것을 롤백(rollback)이라고 합니다


트랜잭션 시작하기

> START TRANSACTION;

> A 계좌에 -10만원

> B 계좌에 +10만원

> COMMIT

결과 : A계좌에 10만원이 빠져나가있고 B계좌에 10만원이 들어와있음


> START TRANSACTION;

> A 계좌에 -10만원

> B 계좌에 +10만원

> ROLLBACK

결과 : A,B계좌 금액 변동 없음


트랜잭션은 기본적으로 자동커밋을 사용하고 있습니다.

이를 OFF로 하기 위해서는

> set autocommit=0;

을 실행하면 됩니다.


만약에 데이터베이스를 여럿이서 공유하고 있다면 set autocommit을 수행하면 다른 사람들에게는 꼭 알려줘야겠죠?

그래서 데이터베이스에서 직접 바꾸는 것이 아닌 코드상에서 자동커밋을 막고 하는걸 권해드립니다


단, 아래의 쿼리는 트랜잭션을 지원하지 않으니 주의해주세요

* DROP DATABASE

* DROP TABLE

* DROP

* ALTER TABLE

[출처] mysql transaction|작성자 티딩


'Knowledge' 카테고리의 다른 글

PSTN  (0) 2018.03.04
C# Winforms Message Box  (0) 2018.03.04
Wave 파일 압축 코덱 비교  (0) 2018.02.24
DataGrip 사용법 페이지  (0) 2018.02.23
G.711  (0) 2018.02.21

+ Recent posts