[php] 데이터베이스 트랜잭션 처리 방법

데이터베이스 트랜잭션은 ACID (Atomicity, Consistency, Isolation, Durability) 원칙을 준수하면서 데이터베이스 작업을 안전하게 수행할 수 있도록 도와줍니다. 이 블로그 포스트에서는 PHP에서 데이터베이스 트랜잭션을 처리하는 방법에 대해 설명하겠습니다.

1. 데이터베이스 연결

가장 먼저 데이터베이스에 연결해야 합니다. PHP에서는 mysqliPDO와 같은 확장 또는 라이브러리를 사용하여 데이터베이스에 연결합니다.

<?php
$servername = "서버이름";
$username = "사용자이름";
$password = "패스워드";
$dbname = "데이터베이스명";

// mysqli 확장을 이용한 데이터베이스 연결
$conn = new mysqli($servername, $username, $password, $dbname);

// PDO를 이용한 데이터베이스 연결
try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
    echo "Connection failed: " . $e->getMessage();
}
?>

2. 트랜잭션 시작

데이터베이스 트랜잭션을 시작하려면 beginTransaction 메서드를 사용해야 합니다. 이렇게 하면 모든 데이터베이스 작업은 트랜잭션으로 묶이게 됩니다.

<?php
// mysqli 확장을 이용한 트랜잭션 시작
$conn->begin_transaction();

// PDO를 이용한 트랜잭션 시작
$conn->beginTransaction();
?>

3. 변경 사항 적용

트랜잭션 내에서 데이터베이스 변경을 수행합니다.

<?php
$sql = "UPDATE 테이블명 SET 칼럼명='값' WHERE 조건";
$conn->query($sql);
?>

4. 트랜잭션 커밋 또는 롤백

모든 변경 사항을 데이터베이스에 적용하려면 commit 메서드를 호출하여 트랜잭션을 커밋해야 합니다. 트랜잭션을 취소하고 이전 상태로 되돌리려면 rollback 메서드를 호출합니다.

<?php
// 변경 사항을 적용
$conn->commit();

// 변경 사항 취소
$conn->rollback();
?>

5. 연결 종료

데이터베이스 작업이 완료되면 데이터베이스 연결을 종료해야 합니다.

<?php
// mysqli 확장을 이용한 데이터베이스 연결 종료
$conn->close();

// PDO를 이용한 데이터베이스 연결 종료
$conn = null;
?>

이렇게 하면 PHP에서 데이터베이스 트랜잭션을 처리할 수 있습니다. 트랜잭션을 사용하면 여러 데이터베이스 작업을 논리적으로 묶어 안전하게 수행할 수 있어서 데이터 무결성과 일관성을 유지할 수 있습니다.

참고문헌: