라이브러리

[PHP] mysqli::begin_transaction - 트랜잭션을 시작합니다.




MySQLi Transaction


MySQLi는 MySQL 데이터베이스와 상호 작용하는 PHP 확장입니다. MySQLi의 `begin_transaction()` 메서드는 현재 연결에서 트랜잭션을 시작합니다. 트랜잭션은 데이터베이스의 일관성을 유지하기 위해 여러 쿼리를 하나의 단위로 처리하는 방법입니다.

# 트랜잭션의 특징


- 원자성(Atomicity): 트랜잭션은 모두 성공하거나 모두 실패합니다.
- 일관성(Consistency): 트랜잭션은 데이터베이스의 일관성을 유지합니다.
- 독립성(Isolation): 트랜잭션은 다른 트랜잭션에 영향을 받지 않습니다.
- 持続성(Durability): 트랜잭션의 결과는 데이터베이스에 영구적으로 저장됩니다.

# 예제


#hostingforum.kr
php

// MySQLi 연결 설정

$host = 'localhost';

$db_name = 'mydb';

$user = 'root';

$password = '';



// MySQLi 연결 생성

$mysqli = new mysqli($host, $user, $password, $db_name);



// 트랜잭션 시작

if ($mysqli->begin_transaction()) {

    echo "트랜잭션 시작 성공
";



    // 쿼리 1

    $query1 = "INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com')";

    if ($mysqli->query($query1)) {

        echo "쿼리 1 성공
";

    } else {

        echo "쿼리 1 실패
";

        $mysqli->rollback();

        exit;

    }



    // 쿼리 2

    $query2 = "INSERT INTO orders (user_id, product_id) VALUES (1, 1)";

    if ($mysqli->query($query2)) {

        echo "쿼리 2 성공
";

    } else {

        echo "쿼리 2 실패
";

        $mysqli->rollback();

        exit;

    }



    // 트랜잭션 커밋

    if ($mysqli->commit()) {

        echo "트랜잭션 커밋 성공
";

    } else {

        echo "트랜잭션 커밋 실패
";

    }

} else {

    echo "트랜잭션 시작 실패
";

}



// MySQLi 연결 닫기

$mysqli->close();



이 예제에서는 `begin_transaction()` 메서드를 사용하여 트랜잭션을 시작하고, 두 개의 쿼리를 실행한 후 `commit()` 메서드를 사용하여 트랜잭션을 커밋합니다. 만약 하나의 쿼리라도 실패하면 `rollback()` 메서드를 사용하여 트랜잭션을 롤백합니다.

참고자료


- MySQLi 공식 문서:
- 트랜잭션의 원자성, 일관성, 독립성, 유지성:
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • 전체 10,077건 / 382 페이지

검색

게시물 검색