select
やのような単純な DML ステートメントの場合delete
、トランザクションはロールバックまたはコミットされます。
これは「いつ」発生しますか? それは実際には問題ではありません。他のクライアントには、コミットされたトランザクションの結果しか表示されないため、タイミングは関係ありません。
DDL ステートメントの場合、公式ドキュメントによると、「データベースが DDL ステートメントを実行する直前に暗黙の COMMIT が発生し、その直後に COMMIT または ROLLBACK が発生します」。
トランザクション内で、いくつかの DML ステートメントを実行してから DDL ステートメントを実行した場合、DML ステートメントはコミットできますが、DDL ステートメントはロールバックされます。それらはすべて同じトランザクション内にあるにもかかわらずです。
ただし、あなたが示した単純な例については、すべてかゼロかです。...そして一般的に、コミットされたトランザクションの確認を受け取る前に接続を失った場合、それが機能したかどうかはわかりません。確認する必要があります。
[編集: 「確認する必要がある」ことについて少し詳しく説明します...データベースに「コミット」を(明示的または暗黙的に)送信したかどうかを確認する必要があり、データベースが実行されたかどうかを知る前に接続が失われますコミット。
コミットを発行する前に接続が失われた場合は、ロールバックされることが保証されます (上記の DDL に関する注意事項があります)]