いいえ、エラーが発生してもトランザクションはロールバックされません。ただし、このポリシーを適用するクライアントアプリケーションを使用している可能性があります。
たとえば、mysqlコマンドラインクライアントを使用している場合、通常、エラーが発生すると実行を停止し、終了します。トランザクションの進行中に終了すると、トランザクションはロールバックされます。
独自のアプリケーションを作成する場合、ロールバックのポリシーを制御できますが、いくつかの例外があります。
- 終了(つまり、データベースからの切断)は、常に進行中のトランザクションをロールバックします
- デッドロックまたはロック待機タイムアウトにより、暗黙的にロールバックが発生します
これらの条件を除いて、エラーを生成するコマンドを呼び出すと、エラーは通常どおり返され、トランザクションのコミットを含め、好きなことを自由に行うことができます。