반응형
오류가 발생하면 using 문이 데이터베이스 트랜잭션을 롤백합니까?
using 문에 IDbTransaction이 있지만 using 문에서 예외가 발생하면 롤백되는지 확실하지 않습니다. using 문이 Dispose () 호출을 강제 할 것이라는 것을 알고 있지만 Rollback ()에 대해서도 동일한 지 아는 사람이 있습니까?
업데이트 : 또한 아래에있는 것처럼 명시 적으로 Commit ()를 호출해야합니까, 아니면 using 문으로도 처리됩니까?
내 코드는 다음과 같습니다.
using Microsoft.Practices.EnterpriseLibrary.Data;
...
using(IDbConnection connection = DatabaseInstance.CreateConnection())
{
connection.Open();
using(IDbTransaction transaction = connection.BeginTransaction())
{
//Attempt to do stuff in the database
//potentially throw an exception
transaction.Commit();
}
}
트랜잭션 클래스에 대한 Dispose 메서드는 롤백을 수행하지만 Oracle 클래스는 수행하지 않습니다. 따라서 트랜잭션의 관점에서 구현에 따라 다릅니다.
using
다른 한편으로는 연결 개체에 대한 문 중 하나를 데이터베이스에 연결을 종료하거나 재설정 한 후 풀에 대한 연결을 반환합니다. 두 경우 모두 미결 트랜잭션을 롤백해야합니다. 그렇기 때문에 예외가 활성 트랜잭션을 절대로 남기지 않는 이유입니다.
또한 예, Commit()
명시 적으로 호출해야합니다 .
커밋을 호출해야합니다. using 문은 아무것도 커밋하지 않습니다.
Commit()
호출되지 않은 예외가 있으면 트랜잭션이 자동으로 롤백됩니다.
반응형
'programing tip' 카테고리의 다른 글
Powershell의 'more'또는 'less'명령과 동일합니까? (0) | 2020.10.09 |
---|---|
상대 URL에서 절대 URL 가져 오기. (0) | 2020.10.08 |
codeigniter 웹 사이트를 다국어로 만드는 가장 좋은 방법입니다. (0) | 2020.10.08 |
csvwriter.writerow ()가 각 문자 뒤에 쉼표를 넣는 이유는 무엇입니까? (0) | 2020.10.08 |
완전한 Django URL 구성 결정 (0) | 2020.10.08 |