기록

database - 트랜잭션의 정의와 구문 본문

[Study]/Database

database - 트랜잭션의 정의와 구문

Dannnnnn 2019. 7. 28. 21:40
반응형

트랜잭션이란 ?

데이터베이스에서 이루어지는 하나 이상의 갱신 처리를 모아서 부르는 명칭.

세트로 실행해야 할 하나 이상의 갱신 처리 집합이다.

ex) 와이셔츠 판매단가를 1000원 내리고 대신에 티셔츠 판매단가를 1000원 올리는 것

 

<트랜잭션 구문 만들기>

트랜잭션 개시문과 트랜잭션 종료문으로 갱신 DML문을 감싸는 형식이다.

 

-- BEGIN TRANSACTION; -- postgreSQL

START TRANSACTION; -- MySQL

 

UPDATE Goods SET sell_price = sell_price - 1000 WHERE goods_name = '와이셔츠';

UPDATE Goods SET sell_price = sell_price + 1000 WHERE goods_name = '티셔츠';

 

COMMIT;

-- ROLLBACK;

 

실제로 대부분 제품에서는 트랜잭션 개시 명령을 사용하지 않는다. 암묵적으로 개시되기 때문에...

사용자가 명시적으로 트랜잭션을 시작해 줄 필요가 없음.

I) 하나의 SQL문에 하나의 트랜잭션이라는 규칙을 적용 (자동 커밋 모드)

II) 사용자가 COMMIT 또는 ROLLBACK을 실행하기까지가 하나의 트랜잭션으로 간주

 

자동커밋을 기본 설정으로 하는 DBMS는 SQL Server, PostgreSQL, MySQL 등이 있다.

자동 커밋 모드에서는 DML문 하나마다 트랜잭션 개시문과 종료문이 실행된다.

II모드를 기본 설정으로 하는 Oracle은 사용자가 직접 커밋/롤백하기 전까지는 트랜잭션이 종료되지 않는다.

 

자동커밋모드에서는 DELETE를 주의해야함.

수동커밋모드에서는 ROLLBACK으로 트랜잭션을 취소하고 데이터를 복구할 수 있지만,

자동커밋모드가 켜져있는 상태에서는 불가능하기 때문

반응형

'[Study] > Database' 카테고리의 다른 글

database - 뷰(View)  (0) 2019.07.28
database - 트랜잭션의 ACID 특성  (0) 2019.07.28
database - ORDER BY  (0) 2019.07.26
HAVING - 그룹에 조건을 지정한다  (0) 2019.07.26
database - GROUP BY  (0) 2019.07.26