Seseorang sering tertanya-tanya sama ada MySQL membenarkan penggunaan transaksi bersarang. Dalam artikel ini, kami akan meneroka topik ini dan mendedahkan aspek menarik dalam sistem pengendalian transaksi MySQL.
Jawapan kepada persoalan transaksi bersarang dalam MySQL adalah " Tidak." MySQL tidak menyokong keupayaan untuk mencipta berbilang blok transaksi bersarang dalam satu transaksi. Ciri sedemikian akan membolehkan pembangun merangkum operasi pangkalan data yang kompleks dalam unit yang lebih kecil dan bebas.
Walaupun MySQL tidak mempunyai sokongan terbina dalam untuk transaksi bersarang, enjin storan InnoDBnya memperkenalkan mekanisme yang dipanggil SAVEPOINT yang menawarkan fungsi yang serupa. SAVEPOINTs berfungsi dengan berkesan sebagai titik persempadanan transaksi, membolehkan penciptaan subsekat dalam satu transaksi.
Untuk menggambarkan cara SAVEPOINTs boleh mensimulasikan transaksi bersarang, pertimbangkan contoh berikut :
CREATE TABLE t_test (id INT NOT NULL PRIMARY KEY) ENGINE=InnoDB; START TRANSACTION; INSERT INTO t_test VALUES (1); SELECT * FROM t_test; SAVEPOINT tran2; INSERT INTO t_test VALUES (2); SELECT * FROM t_test; ROLLBACK TO tran2; SELECT * FROM t_test; ROLLBACK; SELECT * FROM t_test;
Dalam contoh ini, SAVEPOINT bernama "tran2" bertindak sebagai sempadan pembendungan untuk subblock dalam transaksi utama. Operasi INSERT dalam subblok ini boleh digulung semula tanpa menjejaskan perubahan yang dibuat dalam transaksi luar.
Walaupun MySQL mungkin tidak menyokong transaksi bersarang secara langsung, penggunaan SAVEPOINTs dalam InnoDB membenarkan pembangun untuk mencapai kefungsian yang serupa, memberikan lebih fleksibiliti dalam mengendalikan operasi pangkalan data yang kompleks.
Atas ialah kandungan terperinci Adakah MySQL Menyokong Transaksi Bersarang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!