트랜잭션 시작으로 커밋 모드를 수동 상태로 전환합니다. 수동 모드에서도 모든 쿼리 명령들을 실행할 수 있습니다 하지만 임시로 처리되기 때문에 실제적인 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
작업내용 커밋!
모든 데이터가 적용 커밋 하였습니다.