BeginTrans, CommitTrans 및 RollbackTrans 메서드(ADO)

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

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

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

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

구문

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

Return Value

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

매개 변수

object
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)

참고 항목

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