我有问题:
我创建了程序:
CREATE PROCEDURE `tran_sp` ()
BEGIN
SELECT 'procedure runned!';
END
$
它的作品!
mysql> CALL tran_sp()$
+-------------------+
| procedure runned! |
+-------------------+
| procedure runned! |
+-------------------+
1 row in set (0.00 sec)
然后我创建了触发器:
mysql> CREATE TRIGGER my_trigger1
-> AFTER INSERT ON users
-> FOR EACH ROW
-> BEGIN
-> CALL tran_sp();
-> END$
mysql> INSERT INTO users VALUES(166,156)$
错误1415(0A000):不允许从触发器返回结果集 MySQL的>
请帮帮我。
答案 0 :(得分:4)
例外是我认为足够清楚。
您可以在触发器内执行其他操作(调用SP,执行插入/更新/删除操作,......)但不允许所有这些操作返回任何结果。
这意味着,不允许在内部使用简单的select语句的SP。相反,如果您在循环中使用此select语句以执行更新或类似操作,则允许这样做,因为您不会返回任何内容。
原因是,insert / update / delete语句不能返回任何内容,它不能返回存储过程的结果集,因此你不应该尝试在触发器内返回一个。