搜尋

首頁  >  問答  >  主體

在mysql的預存程序中建立觸發器

我想在過程中建立觸發器。但經過一番研究後我發現這是不可能的。你能建議我另一種方法來實現以下操作嗎? (由於某種原因,我無法分享確切的數據和查詢。請參考類似的查詢。)

我想要什麼

我建立了一個包含我需要的資料的臨時表。

例如。 CREATE TEMPORARY TABLE temp1 SELECT id, col_1 FROM table1 WHERE col_1=2;

當資料插入temp1時,我想在表格table2中插入數據,我可以透過建立TRIGGER來實現。但問題是我想在 table2 中給出一個值,該值將是動態的並且將從nodejs後端取得。所以我建立了一個 PROCEDURE ,它接受參數 neededId 。但我無法在程式內建立觸發器。我可以透過其他方式實現這一目標嗎?

我創建的流程

這裡 neededId 是我從後端取得要插入的外鍵

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粉197639753268 天前448

全部回覆(1)我來回復

  • P粉217784586

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

    SQL儲存例程中不允許使用語句

    允許的 SQL 語法在準備好的語句中

    #CREATE TRIGGER 未列出。


    最後:觸發器不能在預存程序、函數、預準備語句、觸發器或事件過程中建立。

    回覆
    0
  • 取消回覆