다음을 통해 공유


트랜잭션 지원

트랜잭션에 대한 지원 수준은 드라이버 정의입니다. ODBC는 데이터에 대한 여러 업데이트를 관리할 필요가 없는 단일 사용자 또는 데스크톱 데이터베이스에서 구현되도록 설계되었습니다. 또한 트랜잭션을 지원하는 일부 데이터베이스는 SQL의 DML(데이터 조작 언어) 문에 대해서만 이 작업을 수행합니다. 트랜잭션이 활성 상태일 때 DDL(데이터 정의 언어) 사용과 관련된 제한 사항 또는 특수 트랜잭션 의미 체계가 있습니다. 즉, 테이블에 대한 여러 동시 업데이트에 대한 트랜잭션 지원이 있을 수 있지만 트랜잭션 중에 테이블의 수와 정의를 변경하지는 않을 수 있습니다.

애플리케이션은 SQL_TXN_CAPABLE 옵션을 사용하여 SQLGetInfo를 호출하여 트랜잭션이 지원되는지 여부, DDL을 트랜잭션에 포함할 수 있는지 여부 및 트랜잭션에 DDL을 포함하는 특수 효과를 결정합니다. 자세한 내용은 SQLGetInfo 함수 설명을 참조하세요.

드라이버가 트랜잭션을 지원하지 않지만 애플리케이션에서 ODBC 이외의 API를 사용하여 데이터를 잠그고 잠금을 해제할 수 있는 경우 애플리케이션은 필요에 따라 레코드 및 테이블을 잠그고 잠금 해제하여 트랜잭션 지원을 달성할 수 있습니다. 계정 전송 예제를 구현하기 위해 애플리케이션은 두 계정에 대한 레코드를 잠그고, 현재 값을 복사하고, 첫 번째 계정을 차변하고, 두 번째 계정에 크레딧을 제공하고, 레코드의 잠금을 해제합니다. 단계가 실패하면 애플리케이션은 복사본을 사용하여 계정을 다시 설정합니다.

트랜잭션을 지원하는 데이터 원본조차도 특정 환경 내에서 한 번에 둘 이상의 트랜잭션을 지원하지 못할 수 있습니다. 애플리케이션은 SQL_MULTIPLE_ACTIVE_TXN 옵션을 사용하여 SQLGetInfo를 호출하여 데이터 원본이 동일한 환경에서 둘 이상의 연결에서 동시 활성 트랜잭션을 지원할 수 있는지 여부를 결정합니다. 연결당 하나의 트랜잭션이 있기 때문에 동일한 데이터 원본에 대한 여러 연결이 있는 애플리케이션에만 흥미롭습니다.