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 함수를 사용하여 트랜잭션을 커밋하거나 롤백해야 합니다.