2009-06-25 2 views

답변

8

아무 것도 없습니다 - 거래는 계속 진행 중입니다. 연결을 종료하면 롤백됩니다.

6

트랜잭션이 데이터베이스의 일부를 잠글 수 있으므로 이러한 명령 중 하나를 실행해야만 다른 트랜잭션/쿼리가 차단 될 수 있습니다.

어느 시점에서 어떤 방법 으로든 거래가 완료되어야합니다. 뭔가 잘못되어 (예 : 응용 프로그램이 종료 된 경우), 먼저 커밋하지 않으면 롤백됩니다.

1

응용 프로그램이 종료되면 연결이 암시 적으로 닫히고 롤백됩니다.

응용 프로그램이 응용 프로그램 서버 (예 : ASPNET, Java 응용 프로그램 서버 등)에서 실행중인 경우 연결이 풀로 반환 될 수 있습니다. 다시 사용하기 전에 다시 설정하면 결국 트랜잭션이 롤백됩니다. 하지만 아마도 즉시는 아님).

사용되지 않는 연결이 풀에있는 경우 응용 프로그램 서버에 의해 결국 닫히고 트랜잭션이 확실히 롤백됩니다.

오픈 트랜잭션을 너무 오랫동안 유지하는 것을 조심하십시오 - 잠금을 유지하고 (무엇인가 변경 한 경우) 이전 행을 지우지 않아 많은 " 휘젓다".

0

트랜잭션을 열린 상태로두면 원하지 않는 동작이 발생합니다. 앱이 풀에 연결을 반환 할 때 롤백되지 않으면 차단 트랜잭션이 발생합니다. 롤백하면 작업 내용이 손실됩니다. 어쨌든 이것은 프로덕션 환경에서 사용자가 원하는 동작이 아닙니다.

/Håkan Winther

관련 문제