거래는 기본입니다 모든 데이터베이스 시스템의 개념.
예를 들어, 잔액이 포함 된 은행 데이터베이스를 고려하십시오 다양한 고객 계정 및 총 예금 잔고에 대해
업데이트 계정 설정 밸런스 = 밸런스 -100.00 여기서 이름 = 'Alice';
이 명령의 세부 사항은 여기서 중요하지 않습니다. 그만큼거래우리 에게이 보증을 제공합니다. 거래는Atomic: 다른 관점에서 거래, 그것은 완전히 발생하거나 전혀 발생하지 않습니다.
일단 거래가 완료되면 보증을 원합니다. 데이터베이스 시스템에 의해 인정 된 것은 실제로
트랜잭션 데이터베이스의 또 다른 중요한 속성은 다음과 같습니다 원자 업데이트의 개념과 밀접한 관련이있는 경우 :
in롤 토토, 거래 트랜잭션의 SQL 명령을시작and커밋명령. 그래서 우리 은행 거래는 그럴 것입니다
시작;계정 업데이트 설정 밸런스 = 밸런스 -100.00
트랜잭션을 통해 파트 웨이를 사용하는 경우, 우리는 원하지 않는다고 결정합니다. 커밋하기 위해 (아마도 우리는 앨리스의 균형이롤백대신커밋, 그리고 지금까지 모든 업데이트가 될 것입니다 취소.
롤 토토실제로 취급합니다 거래 내에서 실행되는 모든 SQL 문.시작명령 각 개별 진술에는 암시 적시작및 (성공한 경우)커밋그 주위에 싸여 있습니다. 진술 그룹시작and커밋가끔 a라고합니다.롤 토토 블록.
참고 :일부 클라이언트 라이브러리 문제시작and커밋자동으로 명령을 내려서 묻지 않고 거래 블록.
거래에서 진술을 통제 할 수 있습니다. 사용을 통한 더 세분화 된 패션SavePoints. 저장 포인트를 사용하면 선택적으로 할 수 있습니다SavePoint, 필요한 경우 다시 롤백 할 수 있습니다 SavePoint with롤백으로. 모든
SavePoint로 롤백 한 후에도 계속 정의됩니다. 따라서 여러 번 롤백 할 수 있습니다.
이 모든 일은 롤 토토 블록 내에서 일어나고 있으므로 다른 데이터베이스 세션에 볼 수 있습니다.
은행 데이터베이스를 기억하면서 우리가 $ 100.00을 차변한다고 가정합니다 Alice의 계정 및 Bob의 계정, 나중에 만 찾기 위해서만
시작;계정 업데이트 설정 밸런스 = 밸런스 -100.00
이 예제는 물론 지나치게 단순화되었지만 많은 것이 있습니다. 사용을 통해 거래 블록에서 가능한 제어롤백으로입니다 배치 된 롤 토토 블록의 제어를 회복하는 유일한 방법