返回信息流刚自学,看《MySQL必知必会》,在触发器那一段,书上的例子
CREATE TRIGGER newproduct AFTER INSERT ON products
FOR EACH ROW SELECT 'Product added';
还有一个
CREATE TRIGGER neworder AFTER INSERT ON orders
FOR EACH ROW SELECT NEW.order_num;
运行都出现Error Code: 1415. Not allowed to return a result set from a trigger
使用的MySQL版本是5.5.19
GOOGLE未果,求解答
顺路求教,使用命令行创建存储过程时,得使用DELIMITER //替代分隔符,为什么用哪个
图形界面运行时也得加这么一句话的。
这是一条镜像帖。来源:北邮人论坛 / database / #6239同步于 2012/2/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖
求教一个MySQL触发器的问题
Apus
2012/2/19镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
在mysql的trigger和function中不能出现select * from table形式的查询,因为其会返回一个结果集;而这在mysql的trigger和function中是不可接受的(也许之前的版本允许),但是在存储过程中可以。在trigger和function中可以使用select ... into ...形式的查询。
ps:我不觉得“google未果”
“Not allowed to return a result set from a trigger”找到约 5,700,000 条结果 (用时 0.23 秒)
至于是否添加DELIMITER改变结束符,要看你使用哪种MySQL GUI工具以及如何设置,如在phpMyAdmin中执行命令时,可在Delimiter文本框中填写//而不需要在sql语句中添加
【 在 Apus 的大作中提到: 】
: 刚自学,看《MySQL必知必会》,在触发器那一段,书上的例子
: CREATE TRIGGER newproduct AFTER INSERT ON products
: FOR EACH ROW SELECT 'Product added';
: ...................
http://dev.mysql.com/doc/refman/5.0/en/stored-program-restrictions.html
For stored functions (but not stored procedures), the following additional statements or operations are not permitted:
...
Statements that return a result set. This includes SELECT statements that do not have an INTO var_list clause and other statements such as SHOW, EXPLAIN, and CHECK TABLE. A function can process a result set either with SELECT ... INTO var_list or by using a cursor and FETCH statements.