Rumah  >  Artikel  >  pangkalan data  >  Bilakah Transaksi Tidak Digulingkan Secara Automatik dalam SQL?

Bilakah Transaksi Tidak Digulingkan Secara Automatik dalam SQL?

Susan Sarandon
Susan Sarandonasal
2024-10-25 07:49:28994semak imbas

When is a Transaction Not Automatically Rolled Back in SQL?

Pemulihan Transaksi Automatik

Persoalannya berkisar tentang tingkah laku transaksi apabila ralat berlaku dalam blok pernyataan SQL yang dilampirkan oleh MULA TRANSAKSI dan KOMIT TRANSAKSI. OP menyedari bahawa apabila ralat sintaks ditemui sebelum penyata TRANSAKSI COMMIT, urus niaga digulung semula secara automatik.

Mekanisme Rollback Transaksi

Tidak, urus niaga tidak dilancarkan. kembali serta-merta apabila menghadapi ralat. Walau bagaimanapun, aplikasi pelanggan tertentu mungkin menggunakan dasar khusus untuk pengendalian ralat.

Sebagai contoh, dalam klien baris arahan mysql:

  • Ralat semasa pelaksanaan biasanya menghentikan proses pelaksanaan dan mengakibatkan pelanggan berhenti.
  • Berhenti semasa urus niaga sedang berjalan menyebabkan urus niaga ditarik balik secara automatik.

Dasar Guling Balik Penyesuaian

Apabila membina aplikasi anda sendiri, anda mempunyai kawalan ke atas dasar pemulangan transaksi. Walau bagaimanapun, ambil perhatian bahawa terdapat pengecualian apabila pemulangan semula dikuatkuasakan:

  1. Putus Sambungan Pelanggan: Berhenti atau memutuskan sambungan daripada pangkalan data sentiasa memulakan pemulangan semula transaksi.
  2. Tamat Masa Mati/Lock-Wait: Apabila kebuntuan atau tamat masa tunggu kunci berlaku, rollback tersirat berlaku.

Untuk semua senario lain, jika ralat ditemui semasa transaksi , ralat dikembalikan dan pembangun mempunyai pilihan untuk melakukan atau membuang transaksi.

Atas ialah kandungan terperinci Bilakah Transaksi Tidak Digulingkan Secara Automatik dalam SQL?. 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