我想在過(guò)程中建立觸發(fā)器。但經(jīng)過(guò)一番研究後我發(fā)現(xiàn)這是不可能的。你能建議我另一種方法來(lái)實(shí)現(xiàn)以下操作嗎? (由於某種原因,我無(wú)法分享確切的數(shù)據(jù)和查詢。請(qǐng)參考類似的查詢。)
我想要什麼
我建立了一個(gè)包含我需要的資料的臨時(shí)表。
例如。 CREATE TEMPORARY TABLE temp1 SELECT id, col_1 FROM table1 WHERE col_1=2;
當(dāng)資料插入temp1時(shí),我想在表格table2
中插入數(shù)據(jù),我可以透過(guò)建立TRIGGER
來(lái)實(shí)現(xiàn)。但問(wèn)題是我想在 table2
中給出一個(gè)值,該值將是動(dòng)態(tài)的並且將從nodejs後端取得。所以我建立了一個(gè) PROCEDURE
,它接受參數(shù) neededId
。但我無(wú)法在程式內(nèi)建立觸發(fā)器。我可以透過(guò)其他方式實(shí)現(xiàn)這一目標(biāo)嗎?
我創(chuàng)建的流程
這裡 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 語(yǔ)法在準(zhǔn)備好的語(yǔ)句中
#CREATE TRIGGER
未列出。
最後:觸發(fā)器不能在預(yù)存程序、函數(shù)、預(yù)準(zhǔn)備語(yǔ)句、觸發(fā)器或事件過(guò)程中建立。