2016-09-22 1 views
1

Sequel을 사용하여 MySql 및 SQL Server 데이터베이스에 액세스하고 있습니다. 뭔가 내 쿼리 잘못되면후속 트랜잭션은 커밋 중 오류를 처리합니다.

@client = Sequel.connect(config) 
@client.transaction do 
    @client.execute("DELETE FROM UserGroup WHERE UserId = #{user_id}") 
    @client.execute("DELETE FROM User WHERE Id = #{user_id}") 
end 

따라서, 트랜잭션이 롤백되고 모든 것이 확인 될 것입니다 :

속편 날과 같이 트랜잭션을 수행 할 수 있습니다.

내 쿼리가 정상이지만 커밋 시점에 데이터베이스에 문제가있어 커밋이 실패하면 루비 코드가이를 감지하여 실패할까요?

+1

관련 항목 : http://stackoverflow.com/questions/3960189/can-a-commit-statement-in-sql-ever-fail-how –

답변

1

데이터베이스 어댑터 구현 방법에 따라 다릅니다. 예외를 throw 할 가능성이있어, Sequel::Rollback와 다를 가능성이 있습니다. 따라서 transaction 메서드에 의해 catch되지 않고 코드를 버블합니다.

그러나 일반적으로 COMMIT 자체가 아니라 트랜잭션 내에서 조작 중 문제가 발생합니다. 일반적으로 걱정하지 않아도됩니다.

관련 문제