라라벨 | DB:: SQL 트랜잭션, 롤백

|

트랜잭션은 데이터베이스에서 실행되는 쿼리를 한 단위로 묶어서 처리합니다.
쿼리를 실행할 수도 있고, 모든 쿼리를 롤백(실행되지 않은 상태로 되돌림) 할 수도 있습니다.

라라벨의 쿼리 빌더에서 제공하는 트랜잭션 기능은
클로저 안에서 묶은 코드의 일부에서 예외가 발생하면 이를 감지하고 트랜잭션을 롤백합니다.

사용법

DB::transaction(function() use ($userId, $numVotes) {

    DB::table('users')
        ->where('id' , $userId)
        ->update(['votes' => $numVotes]);
        
    DB::table('votes')
        ->where('user_id' , $userId)
        ->delete();

});

롤백

// 트랜잭션을 실행합니다
DB::beginTransaction();

// 데이터베이스 작업을 수행합니다
if ($badThingsHappened) {
    DB::rollBack();
}

// 커밋으로 작업을 마칩니다
DB::commit();

처음 시작은 DB::beginTransaction() 메서드로 트랜잭션을 시작하고
마지막에는 DB::commit(); 으로 마치거나 DB::rollBack(); 으로 되돌릴 수 있습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

클릭하여 복사