我想在过程中创建触发器。但经过一番研究后我发现这是不可能的。你能建议我另一种方法来实现以下操作吗? (由于某种原因,我无法分享确切的数据和查询。请参考类似的查询。)
我想要什么
我创建了一个包含我需要的数据的临时表。
例如。 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
未列出。最后:触发器不能在存储过程、函数、预准备语句、触发器或事件过程中创建。