2 augusti, 2019 Inopto_AB

db 트랜잭션 예제

자율 트랜잭션은 주 트랜잭션인 다른 트랜잭션에서 호출할 수 있는 독립 트랜잭션입니다. 호출 트랜잭션을 일시 중단하고 SQL 작업을 수행하고 자율 트랜잭션에서 커밋 또는 실행 취소한 다음 호출 트랜잭션을 다시 시작할 수 있습니다. 실패한 문은 현재 트랜잭션에서 선행된 작업의 손실을 일으키지 않습니다. 예를 들어 ”샘플 트랜잭션: 계정 차변 및 신용”에서 두 번째 UPDATE 문을 실행하면 오류가 발생하여 롤백되는 경우 첫 번째 UPDATE 문에 의해 수행된 작업이 롤백되지 않습니다. 첫 번째 UPDATE 문은 사용자가 명시적으로 커밋하거나 롤백할 수 있습니다. 이 문은 트랜잭션을 t3로 롤백하고 t4에서 Greene의 급여에 대한 업데이트를 취소합니다. sal_update 트랜잭션이 종료되지 않았습니다. 세션 2는 Greene 행을 업데이트하려고 시도하지만 세션 1에 이 행에 잠금이 있기 때문에 잠금을 획득하지 못합니다. 세션 2에서 트랜잭션이 시작되지 않았습니다. 커밋에서 사용자는 트랜잭션의 변경 내용을 영구적으로 만들도록 명시적으로 또는 암시적으로 요청했습니다.

트랜잭션에 의해 변경된 내용은 영구적이며 트랜잭션이 커밋된 후에만 다른 사용자에게 표시됩니다. ”샘플 트랜잭션: 계정 차변 및 신용”에 표시된 트랜잭션은 커밋으로 끝납니다. 트랜잭션 가드를 사용하는 경우 오류가 복구 가능하고 세션의 마지막 트랜잭션이 커밋되지 않은 경우 응용 프로그램이 트랜잭션을 재생할 수 있습니다. 마지막 트랜잭션이 커밋되고 사용자 호출이 완료되면 응용 프로그램을 계속할 수 있습니다. 응용 프로그램은 트랜잭션 가드를 사용하여 클라이언트가 다음 작업을 결정할 수 있도록 알려진 결과를 클라이언트에 반환할 수 있습니다. 성공적인 문은 커밋된 트랜잭션과 다릅니다. 다중 행 업데이트에서 모든 행이 변경될 때와 같이 데이터베이스가 오류 없이 원자 단위로 구문 분석되고 실행되는 경우 단일 SQL 문이 성공적으로 실행됩니다. 이 자습서에서는 SQLite 트랜잭션을 다루는 몇 가지 문을 소개했습니다. 이제 시작 트랜잭션, 커밋 및 ROLLBACK 문을 사용하여 SQLite 데이터베이스의 트랜잭션을 제어하는 방법을 알아야 합니다. 오라클 실제 응용 프로그램 클러스터(Oracle RAC)의 경우 논리 트랜잭션 ID에는 데이터베이스 인스턴스 번호가 접두사로 포함됩니다. 커밋되지 않은 트랜잭션에서 savepoint로 롤백하면 지정된 저장점 이후에 변경된 내용이 취소되지만 트랜잭션 자체의 롤백을 의미하지는 않습니다. 트랜잭션이 실행되는 동안 데이터베이스와 클라이언트 모두 논리 트랜잭션 ID를 보유합니다.

데이터베이스는 클라이언트에게 인증, 연결 풀에서 대여할 때 및 하나 이상의 커밋 작업을 실행하는 클라이언트 드라이버의 각 왕복에서 논리적 트랜잭션 ID를 제공합니다. 그림 10-3에서 데이터베이스는 트랜잭션이 커밋되었는지 여부와 마지막 사용자 호출이 완료되었는지 여부를 응용 프로그램에 알립니다. 그런 다음 응용 프로그램은 결과를 최종 사용자에게 반환할 수 있습니다.

Kontakta oss!