Tidak, transaksi tidak dibatalkan segera setelah terjadi kesalahan. Tetapi Anda mungkin menggunakan aplikasi klien yang menerapkan kebijakan ini.
Misalnya, jika Anda menggunakan klien baris perintah mysql, maka biasanya berhenti mengeksekusi ketika terjadi kesalahan dan akan berhenti. Berhenti saat transaksi sedang berlangsung akan menyebabkan transaksi dibatalkan.
Saat Anda menulis aplikasi Anda sendiri, Anda dapat mengontrol kebijakan rollback, tetapi ada beberapa pengecualian:
- Keluar (yaitu memutuskan sambungan dari database) selalu mengembalikan transaksi yang sedang berlangsung
- Deadlock atau lock-wait timeout secara implisit menyebabkan rollback
Selain kondisi ini, jika Anda menjalankan perintah yang menghasilkan kesalahan, kesalahan akan dikembalikan seperti biasa, dan Anda bebas melakukan apa pun yang Anda suka, termasuk tetap melakukan transaksi.