在mysql的預存程序中建立觸發器
P粉197639753
P粉197639753 2024-02-25 19:35:21
0
1
446

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

我想要什麼

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

例如。 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粉197639753
P粉197639753

全部回覆(1)
P粉217784586

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

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

#CREATE TRIGGER 未列出。


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

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板