技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> MySQL --> MySQL 的触发器添加出现Not allowed to return a result set from a trigger

MySQL 的触发器添加出现Not allowed to return a result set from a trigger

浏览:2483次  出处信息

在做一个 Gearman 来现在一个分布式时,我想当 MySQL 有更新时,自动的使用 MySQL 的触发器来提交更新到集群的队列中,在这个项目中,看到 MySQL 的触发器(TRIGGER)非常合适和 Gearman 的 UDF 配合来工作然后使用 MySQL 的自定义变量来做参数提交。
所以学着写了一下 MySQL 触发器,但是当我写完插入数据时,MySQL 总是报错:
Not allowed to return a result set from a trigger 。
发现触发器(TRIGGER)不能使用 select 来设置变量结果, 这样会返回结果集,如果在触发器(TRIGGER)中要写成 into 的方式
出错的触发器语法

delimiter |
CREATE TRIGGER queue_insert
AFTER INSERT ON queue
FOR EACH ROW
BEGIN
SELECT @args = concat(NEW.id,'|',NEW.title) ;
IF NEW.priority >= 1 THEN
SET @gd = gman_do_high_background('convert',@args);
ELSE
SET @gd = gman_do_background('convert',@args);
END IF;
END;
|
delimiter;

必须写成下面这样

delimiter |
CREATE TRIGGER queue_insert
AFTER INSERT ON queue
FOR EACH ROW
BEGIN
SELECT concat(NEW.id,'|',NEW.title) INTO @args;
IF NEW.priority >= 1 THEN
SET @gd = gman_do_high_background('convert',@args);
ELSE
SET @gd = gman_do_background('convert',@args);
END IF;
END;
|
delimiter;

参考资料:http://dev.mysql.com/doc/refman/5.1/zh/triggers.html

建议继续学习:

  1. 利用MySQL触发器高性能造数据    (阅读:4924)
  2. Oracle中审计删除(DELETE)操作的触发器    (阅读:1983)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1