Saya mahu mencipta pencetus dalam proses. Tetapi selepas beberapa kajian saya mendapati ini tidak mungkin. Bolehkah anda mencadangkan saya cara lain untuk mencapai perkara berikut? (Atas sebab tertentu, saya tidak dapat berkongsi data dan pertanyaan yang tepat. Sila rujuk pertanyaan yang serupa.)
Apa yang saya mahu
Saya mencipta jadual sementara yang mengandungi data yang saya perlukan.
Sebagai contoh. CREATE TEMPORARY TABLE temp1 SELECT id, col_1 FROM table1 WHERE col_1=2;
Apabila data dimasukkan ke dalam temp1, saya mahu ia berada dalam jadual table2
中插入数据,我可以通过创建TRIGGER
来实现。但问题是我想在 table2
中给出一个值,该值将是动态的并且将从nodejs后端获取。所以我创建了一个 PROCEDURE
,它接受参数 neededId
. Tetapi saya tidak boleh mencipta pencetus dalam program. Adakah terdapat cara lain untuk saya mencapai ini?
Proses penciptaan saya
Di sini neededId
ialah tempat saya mendapat kunci asing untuk dimasukkan dari bahagian belakang
DELIMITER $$ USE `DB`$$ CREATE PROCEDURE `MyProcedure` (IN neededID int) BEGIN DROP TABLE IF EXISTS temp1; CREATE TEMPORARY TABLE temp1 SELECT id, col_1 FROM table1 WHERE col_1=2; DROP TRIGGER IF EXISTS myTrigger; CREATE TRIGGER myTrigger AFTER INSERT ON temp1 FOR EACH ROW BEGIN INSERT into table2("value1", "value2", neededId); END; END$$ DELIMITER ;
Penyata tidak dibenarkan dalam rutin yang disimpan SQL
Sintaks SQL yang dibenarkan dalam pernyataan yang disediakan
CREATE TRIGGER
Tidak tersenarai.Akhir sekali: Pencetus tidak boleh dibuat dalam prosedur tersimpan, fungsi, pernyataan yang disediakan, pencetus atau prosedur acara.