Ralat MySQL: Kemas Kini Dilarang Dalam Fungsi/Pencetus Tersimpan
Apabila cuba mengemas kini jadual dalam fungsi atau pencetus yang disimpan MySQL, anda boleh menghadapi ralat:
Error: Can't update table 'brandnames' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
Memahami Ralat
Ralat ini berpunca daripada sekatan dalam MySQL yang melarang mengubah suai jadual semasa pencetus INSERT sedang dilaksanakan. Pengubahsuaian sedemikian berpotensi membawa kepada kebuntuan atau gelung rekursif tak terhingga.
Mengelakkan Ralat
Untuk mengelakkan ralat ini, pertimbangkan pendekatan berikut:
Gunakan BARU dan LAMA Medan:
Ubah suai Pencetus Konteks:
Contoh Penggunaan SEBELUM INSERT Pencetus:
Andaikan anda mempunyai medan_nama_jenama penuh dan perlu mencipta medan short_name yang mengandungi dua huruf pertama dalam huruf besar:
CREATE TRIGGER `capital` BEFORE INSERT ON `brandnames` FOR EACH ROW BEGIN SET NEW.short_name = CONCAT(UCASE(LEFT(NEW.full_brand_name,1)) , LCASE(SUBSTRING(NEW.full_brand_name,2))) END
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Mengemas kini Jadual Di Dalam Fungsi atau Pencetus Tersimpan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!