我想在過程中建立觸發器。但經過一番研究後我發現這是不可能的。你能建議我另一種方法來實現以下操作嗎? (由於某種原因,我無法分享確切的數據和查詢。請參考類似的查詢。)
我想要什麼
我建立了一個包含我需要的資料的臨時表。
例如。 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 ;
SQL儲存例程中不允許使用語句
允許的 SQL 語法在準備好的語句中
#CREATE TRIGGER
未列出。最後:觸發器不能在預存程序、函數、預準備語句、觸發器或事件過程中建立。