문제

몇 분 전, 새로운 스프로크를 운동하는 동안 나는 잘못된 삭제 명령문을 실행했습니다. 이 같은:

Delete From SomeTable Where SomeStatusID=1

10 초 동안, 나는 잘못된 상태를 입력하고 취소를 누른다는 것을 깨달았습니다. 성명서가 취소되었다고 말했다.

나는 거래가 아니기 때문에 아마도 일부 레코드가 삭제되었을 것이라고 생각하면서 방금 멍청한 테이블을 다시 얻기 위해 별도의 데이터베이스로 복원했습니다.

이상하게도 기록은 모두 손상되지 않았습니다. 이것이 왜 그런지 궁금합니다. 명시 적 거래가 정의되지 않았음에도 불구 하고이 경우 개인 삭제 명세서를 거래로 취급 했습니까?

도움이 되었습니까?

해결책

기본적으로 단일 DML 문은 트랜잭션으로 실행됩니다. 성명서가 성공하면 거래가 커밋됩니다. 명세서가 취소되거나 다른 방식으로 실패하면 거래가 롤백됩니다.

이 동작은 엔진에 내장되어 있으며 관리 스튜디오와 관련이 없습니다. 보다 자동 커밋 트랜잭션 문서에서.

다른 팁

거기 있습니다 언제나 업무. 변경되는 유일한 것은 해당 트랜잭션이 서로 격리되는 방법과 관리 스튜디오에서 트랜잭션이 명시 적으로 정의되지 않을 수 있으며 쿼리가 완료 될 때 자동 커미션된다는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top