예시
- 1개의 SQL = 1개의 TRANSACTION (X)
START TRANSACTION;
SET count = (SELECT COUNT(*) FROM equipment WHERE item_id = param_id);
IF count > 0 THEN
DELETE FROM equipment WHERE item_id = param_id;
END IF;
INSERT INTO equipment (equip_type, equip_upgrade_slot_count, equip_request_level, equip_job, equip_base_rank, equip_stat, item_id) VALUES (param_equip_type, param_equip_upgrade_slot_count, param_equip_request_level, param_equip_job, param_equip_base_rank, param_equip_stat, param_id);
IF ROW_COUNT() > 0 THEN
COMMIT;
ELSE
ROLLBACK;
END IF;
- 위 코드는 equipment를 create하는 procedure 의 일부분이다. item 타입이 Equipment인지 아닌 지에 따라 create할 때, equipment의 data를 삭제, 생성해줘야 하기 때문에, 해당 item_id에 해당하는 data가 equipment에 있는지 확인 후, 있는 경우 delete한 후 insert를 한다. 따라서 delete + insert 가 하나의 transaction 인 것이다.
- 게시판을 예로 들어보자.
게시판 사용자는 게시글을 작성하고, 올리기 버튼을 누른다. 그 후에 다시 게시판에 돌아왔을 때, 게시판은 자신의 글이 포함된 업데이트된 게시판을 보게 된다. 이러한 상황을 데이터베이스 작업으로 옮기면, 사용자가 올리기 버튼을 눌렀을 시, Insert 문을 사용하여 사용자가 입력한 게시 글의 데이터를 옮긴다. 그 후에, 게시판을 구성할 데이터를 다시 Select 하여 최신 정보로 유지한다. 여기서 작업의 단위는 insert문과 select문을 합친 것이다. 이러한 작업 단위를 하나의 트랜잭션이라 한다.