Rumah  >  Artikel  >  pangkalan data  >  Pemprosesan transaksi MySQL: perbezaan antara penyerahan automatik dan penyerahan manual

Pemprosesan transaksi MySQL: perbezaan antara penyerahan automatik dan penyerahan manual

王林
王林asal
2024-03-16 11:33:10528semak imbas

Pemprosesan transaksi MySQL: perbezaan antara penyerahan automatik dan penyerahan manual

Pemprosesan transaksi MySQL: perbezaan antara penyerahan automatik dan penyerahan manual

Dalam pangkalan data MySQL, transaksi ialah satu set pernyataan SQL, sama ada semuanya berjaya dilaksanakan atau semuanya gagal, memastikan ketekalan dan integriti data . Dalam MySQL, urus niaga boleh dibahagikan kepada penyerahan automatik dan penyerahan manual Perbezaannya terletak pada masa penyerahan transaksi dan skop kawalan ke atas transaksi. Berikut akan memperkenalkan perbezaan antara penyerahan automatik dan penyerahan manual secara terperinci, dan memberikan contoh kod khusus untuk digambarkan.

1. Penyerahan automatik
Dalam MySQL, jika pemprosesan transaksi tidak didayakan secara eksplisit, setiap penyata SQL akan diserahkan secara automatik. Dalam erti kata lain, urus niaga akan diserahkan secara automatik selepas setiap pernyataan SQL dilaksanakan, dan pengubahsuaian data akan berkuat kuasa serta-merta, jadi konsistensi data tidak dapat dijamin.
Secara lalai, MySQL secara automatik mendayakan fungsi autokomit. Anda boleh mengawal tingkah laku penyerahan automatik dengan menetapkan parameter autokomit apabila autokomit ialah 1, ini bermakna penyerahan automatik didayakan apabila autokomit ialah 0, ini bermakna penyerahan automatik dilumpuhkan.

Berikut ialah contoh kod ringkas yang menunjukkan tingkah laku penyerahan automatik:

CREATE TABLE example_table (
    id INT PRIMARY KEY,
    name VARCHAR(50)
);

INSERT INTO example_table VALUES (1, 'Alice');
INSERT INTO example_table VALUES (2, 'Bob');

SELECT * FROM example_table;

Selepas kod di atas dilaksanakan, data akan diserahkan secara automatik dan pengubahsuaian data akan berkuat kuasa serta-merta.

2. Penyerahan manual
Penyerahan manual merujuk kepada melaksanakan berbilang penyata SQL dalam transaksi, dan kemudian menyerahkan transaksi secara manual pada masa yang sesuai untuk memastikan konsistensi data. Dalam MySQL, anda boleh menggunakan pernyataan BEGIN, COMMIT dan ROLLBACK untuk mengawal komit dan rollback transaksi.

Berikut ialah contoh kod yang menunjukkan gelagat penyerahan manual:

SET autocommit = 0; -- 关闭自动提交

BEGIN; -- 开始事务

UPDATE example_table SET name = 'Alice Smith' WHERE id = 1;
DELETE FROM example_table WHERE id = 2;

SELECT * FROM example_table; -- 这时数据还未提交,查询结果不包含最新的修改

COMMIT; -- 提交事务

SELECT * FROM example_table; -- 这时数据已提交,查询结果包含最新的修改

Dalam kod di atas, penyerahan manual melumpuhkan penyerahan automatik dengan menetapkan autokomit kepada 0, kemudian menggunakan BEGIN untuk memulakan transaksi, melaksanakan berbilang penyata SQL, dan akhirnya menggunakan COMMIT untuk menyerahkan urusan. Semasa proses penyerahan manual, anda boleh menggunakan ROLLBACK pada bila-bila masa untuk melancarkan transaksi dan membuat asal pengubahsuaian sebelumnya. Ini memastikan ketekalan dan integriti data.

Ringkasan:
Penyerahan automatik dan penyerahan manual adalah dua cara pemprosesan transaksi dalam MySQL Perbezaannya terletak pada masa dan kaedah kawalan penghantaran transaksi. Autocommit secara automatik melakukan transaksi selepas setiap pernyataan SQL dilaksanakan, manakala komit manual memerlukan secara eksplisit memulakan dan menamatkan transaksi. Dalam aplikasi sebenar, pilih kaedah penyerahan yang sesuai seperti yang diperlukan untuk memastikan ketekalan dan integriti data.

Atas ialah kandungan terperinci Pemprosesan transaksi MySQL: perbezaan antara penyerahan automatik dan penyerahan manual. 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