首页  >  问答  >  正文

在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粉197639753237 天前414

全部回复(1)我来回复

  • P粉217784586

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

    SQL存储例程中不允许使用语句

    允许的 SQL 语法在准备好的语句中

    CREATE TRIGGER 未列出。


    最后:触发器不能在存储过程、函数、预准备语句、触发器或事件过程中创建。

    回复
    0
  • 取消回复