PDO::beginTransaction

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)

PDO::beginTransaction — 트랜잭션을 시작합니다.


설명

public PDO::beginTransaction(): bool

자동 커밋 모드를 끕니다. 자동 커밋 모드가 꺼져 있는 동안에는 PDO::commit()을 호출하여 트랜잭션을 종료할 때까지 PDO 개체 인스턴스를 통해 데이터베이스에 적용된 변경 사항이 커밋되지 않습니다. PDO::rollBack()을 호출하면 데이터베이스에 대한 모든 변경 사항을 롤백하고 연결을 자동 커밋 모드로 되돌립니다.

MySQL을 포함한 일부 데이터베이스는 DROP TABLE 또는 CREATE TABLE과 같은 데이터베이스 정의 언어(DDL) 문이 트랜잭션 내에서 실행될 때 암시적 COMMIT를 자동으로 실행합니다. 암시적 COMMIT는 트랜잭션 경계 내에서 다른 변경 사항을 롤백하는 것을 방지합니다.


매개변수

이 함수에는 매개변수가 없습니다.


반환 값

성공하면 true를, 실패하면 false를 반환합니다.


오류/예외

이미 시작된 트랜잭션이 있거나 드라이버가 트랜잭션을 지원하지 않는 경우 PDOException을 던집니다.

참고: PDO::ATTR_ERRMODE 속성이 PDO::ERRMODE_EXCEPTION이 아닌 경우에도 예외가 발생합니다.


Examples

예제 #1 트랜잭션 롤백

다음 예에서는 트랜잭션을 시작하고 변경 사항을 롤백하기 전에 데이터베이스를 수정하는 두 개의 문을 실행합니다. 그러나 MySQL에서 DROP TABLE 문은 트랜잭션의 변경 사항이 롤백되지 않도록 트랜잭션을 자동으로 커밋합니다.

                  
<?php
/* Begin a transaction, turning off autocommit */
$dbh->beginTransaction();

/* Change the database schema and data */
$sth = $dbh->exec("DROP TABLE fruit");
$sth = $dbh->exec("UPDATE dessert
    SET name = 'hamburger'");

/* Recognize mistake and roll back changes */
$dbh->rollBack();

/* Database connection is now back in autocommit mode */
?>
                  
                

기타