Rumah  >  Soal Jawab  >  teks badan

Buat pencetus dalam prosedur tersimpan mysql

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 ;

P粉197639753P粉197639753236 hari yang lalu412

membalas semua(1)saya akan balas

  • P粉217784586

    P粉2177845862024-02-26 15:06:24

    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.

    balas
    0
  • Batalbalas