Rumah  >  Artikel  >  pangkalan data  >  Adakah COMMIT TRANSACTION Omission Automatically Rollback Transactions?

Adakah COMMIT TRANSACTION Omission Automatically Rollback Transactions?

Susan Sarandon
Susan Sarandonasal
2024-10-24 15:12:02886semak imbas

Does COMMIT TRANSACTION Omission Automatically Rollback Transactions?

Pemulihan Automatik jika TRANSAKSI KOMIT Ditinggalkan

Dalam pernyataan SQL yang diberikan:

START TRANSACTION;
BEGIN;
INSERT INTO prp_property1 (module_name,environment_name,NAME,VALUE) VALUES ('','production','','300000');

/** Assume there is syntax error SQL here...**/
Blah blah blah

DELETE FROM prp_property1 WHERE environment_name = 'production';
COMMIT TRANSACTION;

Timbul persoalan sama ada urus niaga digulung semula secara automatik kerana penyata TRANSAKSI COMMIT tidak pernah dicapai kerana ralat sintaks.

Gelagat Balik Transaksi

Bertentangan dengan andaian, urus niaga tidak secara automatik digulingkan semula apabila menghadapi ralat. Tingkah laku ini biasanya dilaksanakan dalam tetapan aplikasi klien. Sebagai contoh, pelanggan baris arahan MySQL menamatkan pelaksanaan dan keluar apabila ralat, yang mengakibatkan penarikan balik mana-mana transaksi yang sedang berjalan.

Apabila membangunkan aplikasi tersuai, pembangun mempunyai kawalan ke atas dasar pemulangan semula transaksi. Walau bagaimanapun, pengecualian tertentu wujud:

  • Menghentikan sambungan pangkalan data sentiasa melancarkan urus niaga yang sedang berjalan.
  • Kebuntuan atau tamat masa tunggu kunci juga secara tersirat mencetuskan pemulangan semula.

Di luar senario khusus ini, ralat tidak menyebabkan penarikan balik secara automatik. Ralat dikembalikan dan pembangun bebas untuk memutuskan tindakan seterusnya, termasuk melakukan transaksi walaupun terdapat ralat.

Atas ialah kandungan terperinci Adakah COMMIT TRANSACTION Omission Automatically Rollback Transactions?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn