mysql触发器的问题 Not allowed to return a result set from a t

MySql 码拜 8年前 (2016-02-14) 1546次浏览
代码如下:
create trigger Organizationname
before insert on tb_car
for each row
Begin
select @zid:=Max(carid) from tb_car;      –@zid获取新增数据的id
end;
Begin
select  @mac:=mac  from tb_car  where  carid=@zid;    –通过ID获取新增数据的MAC
end;
Begin
select  @name:=macname from tb_book where ma=@mac;   –通过对比新增数据的MAC,来获取book表的macname
end;                                                                                                         –book表是mac对照表
Begin
update tb_car set cs=@name where carid=@zid;   –根据新增ID修改car表的MAC对应book表的macname
end;
错误提示:
[MySql.Data]
ErrorCode: -2147467259, Number: 1415
ErrorMessage: Not allowed to return a result set from a trigger
解决方案

35

create trigger Organizationname
before insert on tb_car
for each row
Begin
select @zid:=Max(carid) from tb_car;      –@zid获取新增数据的id
select  @mac:=mac  from tb_car  where  carid=@zid;    –通过ID获取新增数据的MAC
select  @name:=macname from tb_book where ma=@mac;   –通过对比新增数据的MAC,来获取book表的macname
update tb_car set cs=@name where carid=@zid;   –根据新增ID修改car表的MAC对应book表的macname
end;

5

LZ你好
触发器不能调用将数据返回客户端的存储程序,也不能使用采用CALL语句的动态SQL语句,
但是允许存储程序通过参数将数据返回触发程序,也就是存储过程或函数通过OUT或INOUT类型的参数将数据返回触发器是可以的,
但是不能调用直接返回数据的的过程。
通俗的说就是不能在一个触发器中调用其他存储过程或触发器,所以三楼的做法是对的

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明mysql触发器的问题 Not allowed to return a result set from a t
喜欢 (0)
[1034331897@qq.com]
分享 (0)