在mysql的存储过程中创建触发器
P粉197639753
P粉197639753 2024-02-25 19:35:21
0
1
389

我想在过程中创建触发器。但经过一番研究后我发现这是不可能的。你能建议我另一种方法来实现以下操作吗? (由于某种原因,我无法分享确切的数据和查询。请参考类似的查询。)

我想要什么

我创建了一个包含我需要的数据的临时表。

例如。 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 未列出。


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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!