1.트랜잭션 시작: begin_transaction() 메소드를 호출하여 트랜잭션을 시작합니다. 이렇게 하면 데이터베이스 연결에서 시작된 이후의 모든 변경이 임시적으로 처리되고 자동으로는 반영되지 않습니다.
2.데이터 변경 작업: 트랜잭션 내에서 여러 데이터베이스 작업을 수행할 수 있습니다. 이들 작업은 SQL 명령을 사용하여 데이터를 삽입, 업데이트 또는 삭제합니다.
3.트랜잭션 커밋: 모든 데이터베이스 작업이 성공적으로 완료되면 $conn->commit();을 호출합니다. 이 호출은 트랜잭션 동안 만들어진 모든 변경사항을 데이터베이스에 영구적으로 반영합니다.
4.데이터베이스에 반영: 커밋 후, 변경사항은 데이터베이스에 저장되며, 이 시점부터 다른 트랜잭션 또는 사용자가 이 변경사항을 볼 수 있습니다.
5.오류 처리 및 롤백:
만약 트랜잭션 실행 중에 오류가 발생하면, 즉시 롤백을 실행할 수 있습니다. rollback() 메소드를 호출하여 트랜잭션 시작 이후에 발생한 모든 변경사항을 취소합니다.
롤백은 데이터베이스의 이전 상태를 복원하여 오류 이전의 일관성과 무결성을 유지합니다.
$conn->begin_transaction();
try {
$conn->query("INSERT INTO accounts (user_id, amount) VALUES (1, 100)");
$conn->query("UPDATE accounts SET amount = amount - 50 WHERE user_id = 2");
$conn->commit(); // 모든 변경 사항이 성공적이면 커밋
} catch (Exception $e) {
$conn->rollback(); // 오류 발생시 롤백
}