다음을 통해 공유


ODBC의 트랜잭션

ODBC의 트랜잭션은 연결 수준에서 관리됩니다. 애플리케이션이 트랜잭션을 완료하면 해당 연결의 모든 문 핸들을 통해 완료된 모든 작업을 커밋하거나 롤백합니다. 트랜잭션을 커밋하거나 롤백하려면 애플리케이션은 COMMIT 또는 ROLLBACK 문을 제출하는 대신 SQLEndTran 을 호출해야 합니다.

애플리케이션은 SQLSetConnectAttr 를 호출하여 트랜잭션 관리의 두 ODBC 모드 간에 전환합니다.

  • 자동 커밋 모드

    각 문은 성공적으로 완료되면 자동으로 커밋됩니다. 자동 커밋 모드에서 실행하는 경우 다른 트랜잭션 관리 함수가 필요하지 않습니다.

  • 수동 커밋 모드

    실행된 모든 문은 SQLEndTran을 호출하여 특별히 중지될 때까지 동일한 트랜잭션에 포함됩니다.

자동 커밋 모드는 ODBC의 기본 트랜잭션 모드입니다. 연결이 이루어지면 자동 커밋 모드를 해제하여 수동 커밋 모드로 전환하기 위해 SQLSetConnectAttr 가 호출될 때까지 자동 커밋 모드로 전환됩니다. 애플리케이션이 자동 커밋을 해제하면 데이터베이스에 전송된 다음 문이 트랜잭션을 시작합니다. 그러면 애플리케이션이 SQL_COMMIT 또는 SQL_ROLLBACK 옵션을 사용하여 SQLEndTran 을 호출할 때까지 트랜잭션이 계속 적용됩니다. SQLEndTran이 다음 트랜잭션을 시작한 후 데이터베이스로 전송되는 명령입니다.

애플리케이션이 수동 커밋에서 자동 커밋 모드로 전환하면 드라이버는 연결에서 현재 열려 있는 트랜잭션을 커밋합니다.

ODBC 애플리케이션은 BEGIN TRANSACTION, COMMIT TRANSACTION 또는 ROLLBACK TRANSACTION과 같은 Transact-SQL 트랜잭션 문을 사용하면 안 됩니다. 드라이버에서 확정되지 않은 동작이 발생할 수 있기 때문입니다. ODBC 애플리케이션은 자동 커밋 모드에서 실행되고 트랜잭션 관리 함수 또는 문을 사용하지 않거나 수동 커밋 모드에서 실행되고 ODBC SQLEndTran 함수를 사용하여 트랜잭션을 커밋하거나 롤백해야 합니다.

또한 참조하십시오

트랜잭션 수행(ODBC)