
Session::rollbackTo를 사용하여 데이터베이스 트랜잭션을 롤백하는 방법은 다음과 같습니다.
1. 트랜잭션을 시작하기 전에 Session::rollbackTo를 사용하여 데이터베이스 트랜잭션을 롤백할 수 있습니다. 예를 들어, `$session->rollbackTo(0)`을 사용하여 트랜잭션을 롤백할 수 있습니다.
2. Session::rollbackTo를 사용하면 데이터베이스에 영향을 주지 않습니다. 트랜잭션을 롤백할 때만 데이터베이스에 영향을 주는 `commit()`이나 `rollBack()` 메서드를 호출합니다.
3. 트랜잭션을 롤백한 후 다시 트랜잭션을 시작하려면 `$transaction = $session->beginTransaction()`을 다시 호출하여 새로운 트랜잭션을 시작할 수 있습니다.
위의 예제에서 Session::rollbackTo를 사용하여 데이터베이스 트랜잭션을 롤백하는 방법은 다음과 같습니다.
#hostingforum.kr
php
$session = Yii::$app->db;
$transaction = $session->beginTransaction();
try {
// 트랜잭션 수행
$session->createCommand('INSERT INTO users (name, email) VALUES ("John", "john@example.com")')->execute();
$session->createCommand('INSERT INTO orders (user_id, order_date) VALUES (1, NOW())')->execute();
// 트랜잭션 롤백
$session->rollbackTo(0);
// 트랜잭션을 다시 시작합니다.
$transaction = $session->beginTransaction();
} catch (Exception $e) {
// 트랜잭션 롤백
$transaction->rollBack();
}
위의 예제에서 `$session->rollbackTo(0)`을 사용하여 트랜잭션을 롤백하고, `$transaction = $session->beginTransaction()`을 다시 호출하여 새로운 트랜잭션을 시작합니다.
2025-03-14 23:34