代码如下:
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
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;
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类型的参数将数据返回触发器是可以的,
但是不能调用直接返回数据的的过程。
通俗的说就是不能在一个触发器中调用其他存储过程或触发器,所以三楼的做法是对的
触发器不能调用将数据返回客户端的存储程序,也不能使用采用CALL语句的动态SQL语句,
但是允许存储程序通过参数将数据返回触发程序,也就是存储过程或函数通过OUT或INOUT类型的参数将数据返回触发器是可以的,
但是不能调用直接返回数据的的过程。
通俗的说就是不能在一个触发器中调用其他存储过程或触发器,所以三楼的做法是对的