try-catch 구문 내에서 트랜잭션을 사용하는 것이 일반적입니다. 예외가 발생하면 catch 블록에서 롤백을 수행하고 예외를 처리합니다. try 블록 내에서 모든 작업이 성공하면 commit을 호출하여 트랜잭션을 커밋합니다. 작업 중 오류가 생기면 rollback하여 데이터베이스는 이전의 트랜잭션 시작 시점으로 되돌아갑니다.
원자성(Automicity): 사용자 삭제와 순번 조정 작업은 하나의 논리적인 작업 단위로 처리되어야 합니다. 즉, 두 작업 중 하나가 실패하면 다른 작업도 취소되어야 합니다. 트랜잭션을 사용하면 이러한 원자성을 보장할 수 있습니다. 예를 들어, 사용자 삭제는 성공했지만 순번 조정이 실패할 경우, 사용자 삭제 작업이 취소되고 이전 상태로 롤백됩니다.
일관성(Consistency): 데이터베이스는 일관된 상태를 유지해야 합니다. 순번 조정 작업은 사용자 삭제 후에만 수행되어야 합니다. 따라서 삭제 작업이 성공했을 때만 순번 조정 작업이 수행되어야 합니다. 트랜잭션을 사용하면 이러한 일관성을 유지할 수 있습니다.
예외 처리(Exception Handling): 데이터베이스 작업 중에 오류가 발생할 수 있습니다. 예를 들어, 데이터베이스 연결이 끊어지거나 SQL 쿼리가 잘못된 경우 등이 있습니다. 트랜잭션을 사용하면 이러한 예외 상황에 대해 적절히 처리할 수 있습니다. 예외가 발생하면 롤백하여 이전 상태로 되돌릴 수 있습니다.
트랜잭션 시작 (begin_transaction()): 트랜잭션을 시작하고 데이터베이스 작업을 수행하기 전에 호출됩니다. 이 메서드를 호출하면 데이터베이스는 이후의 모든 작업을 하나의 트랜잭션으로 묶습니다.
트랜잭션 커밋 (commit()): 트랜잭션 내에서 모든 데이터베이스 작업이 성공적으로 완료되었을 때 호출됩니다. 커밋을 호출하면 데이터베이스는 모든 작업을 영구적으로 적용합니다.
트랜잭션 롤백 (rollback()): 트랜잭션 내에서 작업 중에 오류가 발생했거나 작업을 취소해야 할 때 호출됩니다. 롤백을 호출하면 데이터베이스는 이전의 트랜잭션 시작 시점으로 되돌아갑니다.