[php] 데이터베이스 트랜잭션 처리 방법
데이터베이스 트랜잭션은 ACID (Atomicity, Consistency, Isolation, Durability) 원칙을 준수하면서 데이터베이스 작업을 안전하게 수행할 수 있도록 도와줍니다. 이 블로그 포스트에서는 PHP에서 데이터베이스 트랜잭션을 처리하는 방법에 대해 설명하겠습니다.
1. 데이터베이스 연결
가장 먼저 데이터베이스에 연결해야 합니다. PHP에서는 mysqli
나 PDO
와 같은 확장 또는 라이브러리를 사용하여 데이터베이스에 연결합니다.
<?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에서 데이터베이스 트랜잭션을 처리할 수 있습니다. 트랜잭션을 사용하면 여러 데이터베이스 작업을 논리적으로 묶어 안전하게 수행할 수 있어서 데이터 무결성과 일관성을 유지할 수 있습니다.
참고문헌: