首页 > 解决方案 > MySQL 使用触发器将数据排序到其他表 - 已解决

问题描述

我有 main_table: SELECT PORT_ID, DATA from main_table

我需要在插入主表之后运行触发器,它将数据排序到其他表:INSERT INTO @PORT_ID (DATA) VALUE (@DATA)

返回错误消息:存储函数中不允许使用动态 sql 或触发器已解析。

任何想法?非常感谢

解决方法

我做了一个简单的解决方法,1,将一个 SQL 查询作为一个完整的文本保存到新表中。2、每秒运行一个 EVENT 与 EXECUTE 保存的查询

标签: mysqltriggers

解决方案


这对评论来说太大了。

一个简单的过程,仅将插入作为准备好的语句执行

CREATE DEFINER=`root`@`localhost` PROCEDURE `procedure_stmt`(IN test TEXT)
BEGIN
SET @sql = test;
 PREPARE stmt2 FROM @sql;
 EXECUTE stmt2;
END

并且作为触发器

BEGIN

 SET @sql = CONCAT('INSERT INTO ','gps_', NEW.PORT,' (DATA) VALUES (',NEW.DATTA,')'); 
CALL procedure_stmt(@sql);
 END$$
 DELIMITER ;

如果您发布了表格和数据,我会进一步测试它。


推荐阅读