Rumah >pangkalan data >tutorial mysql >Mengapa Saya Tidak Boleh Mengemas kini Jadual Dalam Fungsi atau Pencetus Tersimpan MySQL?
Ralat MySQL: Tidak Dapat Mengemas kini Jadual dalam Fungsi/Pencetus Tersimpan
Soalan:
Apabila cuba memasukkan baris baharu ke dalam jadual MySQL menggunakan pencetus, ralat berikut berlaku:
Can't update table 'brandnames' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
Jawapan:
Ralat ini ditemui apabila pencetus INSERT cuba mengubah suai jadual yang memanggilnya. MySQL melarang tingkah laku ini atas dua sebab utama:
Untuk menyelesaikan ralat ini, pertimbangkan untuk menggunakan pendekatan berikut:
Sebagai contoh, untuk mencipta medan nama pendek daripada dua aksara pertama nama penuh, pencetus SEBELUM INSERT berikut boleh digunakan:
CREATE TRIGGER `capital` BEFORE INSERT ON `brandnames` FOR EACH ROW BEGIN SET NEW.short_name = CONCAT(UCASE(LEFT(NEW.full_name,1)) , LCASE(SUBSTRING(NEW.full_name,2))) END
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Mengemas kini Jadual Dalam Fungsi atau Pencetus Tersimpan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!