MySQL Trigger: Delete From Table AFTER DELETE - Syntax Error and Resolution
Apabila cuba mencipta pencetus untuk memadam baris daripada 'patron_info ' jadual selepas satu baris dipadamkan daripada jadual 'penaung', mesej ralat "Semak sintaks berhampiran TAMAT pada baris 6" mungkin ditemui. Ralat ini menunjukkan ralat sintaks dalam kod pencetus.
Kod pencetus yang disediakan pada masa ini mempunyai ralat sintaks dalam klausa WHERE pernyataan DELETE:
DELETE FROM patron_info WHERE patron_info.pid = patrons.id
Isu di sini ialah bahawa trigger merujuk jadual 'penaung' menggunakan alias 'penaung', yang hanya tersedia dalam blok BEGIN dan END pencetus. Untuk menyelesaikan masalah ini, kenyataan DELETE sebaliknya harus merujuk alias 'lama', yang mewakili baris yang dipadamkan daripada jadual 'penaung':
DELETE FROM patron_info WHERE patron_info.pid = old.id
Dengan pembetulan ini, kod pencetus kini hendaklah:
CREATE TRIGGER log_patron_delete AFTER DELETE on patrons FOR EACH ROW BEGIN DELETE FROM patron_info WHERE patron_info.pid = old.id; END
Selain itu, adalah penting untuk memastikan bahawa pernyataan PADAM berakhir dengan koma bernoktah (;) untuk menamatkan pernyataan. Apabila memasukkan kod pencetus dalam konsol, pembatas juga harus digunakan untuk menentukan sempadan pencetus.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat \'Semak Sintaks Hampir TAMAT pada Baris 6\' Semasa Mencipta Pencetus MySQL untuk Padam Dari Jadual Selepas PADAM?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!