select
및 delete
과 같은 간단한 DML 문의 경우 트랜잭션은 롤백되거나 커밋됩니다.
"언제"가 발생합니까? 사실 상관 없습니다. 다른 클라이언트는 커밋 된 트랜잭션의 결과 만 볼 수 있으므로 타이밍은 중요하지 않습니다.
the official docs에 따르면 DDL 문의 경우 "암시 적 COMMIT은 데이터베이스가 DDL 문을 실행하고 즉시 COMMIT 또는 ROLLBACK이 발생하기 직전에 발생합니다".
트랜잭션 내에서 일부 DML 문과 DDL 문을 수행하는 경우 DML 문은 커밋 될 수 있지만 DDL 문은 모두 동일한 트랜잭션에 있더라도 롤백됩니다.
간단한 예를 들어 보겠지만 모두 또는 전부입니다. ... 일반적으로 커밋 된 트랜잭션에 대한 확인을 받기 전에 연결이 끊어지면 실제로 성공했는지 여부는 알 수 없습니다. 확인을해야합니다.
[편집 : 단지 (명시 적 또는 암시 적으로) 당신이 "커밋"데이터베이스를 전송 한 경우 확인해야 ...를 "당신이 확인해야"에 약간 정교, 당신은 잃게하는 방법 데이터베이스가 커밋을 수행했는지 여부를 알기 전에 연결을 확인하십시오.
커밋을 실행하기 전에 연결이 끊어지면 롤백 될 것임을 보증 할 수 있습니다. (위의 DDL 경고와 함께)
[ 'ACID'] (http://en.wikipedia.org/wiki/ACID) 속성을 읽으십시오. 그것은 "All or nothing"이라고 말합니다. – Annjawn