트랜잭션 시작으로 커밋 모드를 수동 상태로 전환합니다. 수동 모드에서도 모든 쿼리 명령들을 실행할 수 있습니다 하지만 임시로 처리되기 때문에 실제적인 DB 시스템에 반영 은 되지 않습니다. 수동 상태는 임시 모드의 쿼리 작업입니다.

수동 커밋 모드에서 처리된 쿼리들은 COMMIT 명령을 입력하게 되면 실제적인 데이터 베이스 시스템에 반영 처리를 하게 됩니다.

| 쿼리 문법 |

COMMIT; 

DB 시스템이 커밋 명령을 입력받으면 트랜잭션 동작을 종료합니다. 그리고 수동 커밋 모드에서 자동 커밋 모드 상태로 돌아갑니다.

24.2.1 쿼리 실습

수동 커밋 모드 상태에서 작업한 쿼리를 DB 시스템에 반영합니다.

| 콘솔 실습 화면 |

mysql> COMMIT;
Query OK, 0 rows affected (0.00 sec)

24.2.2 PHP 실습

PHP 코드를 통하여 커밋 명령을 처리하는 메서드를 생성해 봅니다.

| PHP 예제 | mysql.class.php 파일에 메서드 예제를 추가합니다.

public function commit()
{
            $queryString = "COMMIT";
                
            // 쿼리를 전송합니다.
            if (mysqli_query($this->dbcon, $queryString)=== TRUE) {
                $this->msgEcho("쿼리성공] ".$queryString);
                $this->msgEcho(" 작업내용 커밋!");

            } else {
                $this->msgEcho("Error] ".$queryString);
            }

}
 

예제 파일 | trans-01.php

<?php

	include "dbinfo.php";
	include "mysql.class.php";
 
	// ++ Mysqli DB 연결.
	$db = new JinyMysql();

	// 트렌젝션시작
	if ($db->transaction()){
    	
		// 데이터 전체를 삭제합니다.
		$tbname = "members_all";
		$db->deleteAll($tbname);

		// 작업내용 실제적용
		if ($db->commit()){
			echo "모든 데이터가 적용 커밋 하였습니다.<br>";
		} else {
			echo "커밋을 실패하였습니다.";
		}

	} else {
		echo "트렌젝션 모드로 전환할 수 없습니다.";
	}

?>

화면 출력

mysql connected!
쿼리성공] START TRANSACTION
트렌젝션 시작!
쿼리성공] DELETE FROM members_all
데이터 전체 삭제!
쿼리성공] COMMIT
작업내용 커밋!
모든 데이터가 적용 커밋 하였습니다.