Rumah >pangkalan data >tutorial mysql >Mengapa Saya Mendapat Ralat \'Semak Sintaks Hampir TAMAT pada Baris 6\' Semasa Mencipta Pencetus MySQL untuk Padam Dari Jadual Selepas PADAM?

Mengapa Saya Mendapat Ralat \'Semak Sintaks Hampir TAMAT pada Baris 6\' Semasa Mencipta Pencetus MySQL untuk Padam Dari Jadual Selepas PADAM?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-02 16:53:02237semak imbas

Why Am I Getting a

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!

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