다음을 통해 공유


BeginTrans, CommitTrans 및 RollbackTrans 메서드(ADO)

이러한 트랜잭션 메서드는 다음과 같이 Connection 개체 내에서 트랜잭션 처리를 관리합니다.

  • BeginTrans 새 트랜잭션을 시작합니다.

  • CommitTrans 변경 내용을 저장하고 현재 트랜잭션을 종료합니다. 새 트랜잭션을 시작할 수도 있습니다.

  • RollbackTrans 현재 트랜잭션 중에 변경된 내용을 취소하고 트랜잭션을 종료합니다. 새 트랜잭션을 시작할 수도 있습니다.

통사론

  
level = object.BeginTrans()  
object.BeginTrans  
object.CommitTrans  
object.RollbackTrans  

반환 값

BeginTrans 트랜잭션의 중첩 수준을 나타내는 Long 변수를 반환하는 함수로 호출할 수 있습니다.

매개 변수

개체
Connection 개체입니다.

연결

원본 데이터에 대한 일련의 변경 내용을 단일 단위로 저장하거나 취소하려는 경우 Connection 개체와 함께 이러한 메서드를 사용합니다. 예를 들어 계정 간에 송금하려면 한 계정에서 금액을 빼고 동일한 금액을 다른 계정에 추가합니다. 두 업데이트 중 하나가 실패하면 계정이 더 이상 잔액을 분산하지 않습니다. 열려 있는 트랜잭션 내에서 이러한 변경을 수행하면 변경 내용의 전부 또는 전혀 통과되지 않습니다.

메모

모든 공급자가 트랜잭션을 지원하는 것은 아닙니다. 공급자 정의 속성 "Transaction DDL"이 Connection 개체의 Properties 컬렉션에 표시되는지 확인합니다. 이는 공급자가 트랜잭션을 지원함을 나타냅니다. 공급자가 트랜잭션을 지원하지 않는 경우 이러한 메서드 중 하나를 호출하면 오류가 반환됩니다.

BeginTrans 메서드를 호출한 후에는 CommitTrans 호출하거나 RollbackTrans 호출하여 트랜잭션을 종료할 때까지 공급자가 변경한 내용을 즉시 커밋하지 않습니다.

중첩된 트랜잭션을 지원하는 공급자의 경우 열려 있는 트랜잭션 내에서 BeginTrans 메서드를 호출하면 중첩된 새 트랜잭션이 시작됩니다. 반환 값은 중첩 수준을 나타냅니다. 반환 값 "1"은 최상위 트랜잭션을 열었으며(즉, 트랜잭션이 다른 트랜잭션 내에 중첩되지 않음), "2"는 두 번째 수준 트랜잭션(최상위 트랜잭션 내에 중첩된 트랜잭션)을 열었다는 것을 나타냅니다. CommitTrans 또는 RollbackTrans 호출하면 가장 최근에 열린 트랜잭션에만 영향을 줍니다. 상위 수준 트랜잭션을 확인하려면 먼저 현재 트랜잭션을 닫거나 롤백해야 합니다.

CommitTrans 메서드를 호출하면 연결에서 열린 트랜잭션 내에서 변경한 내용이 저장되고 트랜잭션이 종료됩니다. RollbackTrans 메서드를 호출하면 열려 있는 트랜잭션 내에서 변경된 내용이 취소되고 트랜잭션이 종료됩니다. 열려 있는 트랜잭션이 없을 때 두 메서드를 호출하면 오류가 발생합니다.

Connection 개체의 Attributes 속성에 따라 CommitTrans 또는 RollbackTrans 메서드를 호출하면 새 트랜잭션이 자동으로 시작될 수 있습니다. Attributes 속성이 adXactCommitRetaining 설정되면 CommitTrans 호출 후 공급자가 자동으로 새 트랜잭션을 시작합니다. Attributes 속성이 adXactAbortRetaining 설정되면 RollbackTrans 호출 후 공급자가 자동으로 새 트랜잭션을 시작합니다.

원격 데이터 서비스

BeginTrans, CommitTransRollbackTrans 메서드는 클라이언트 쪽 Connection 개체에서 사용할 수 없습니다.

적용 대상

ADO(Connection Object)

참고 항목

BeginTrans, CommitTrans 및 RollbackTrans 메서드 예제(VB)
BeginTrans, CommitTrans 및 RollbackTrans 메서드 예제(VC++)
ADO(Attributes 속성)