MySQL5.7 支持一个表有多个INSERT/DELETE/UPDATE触发器
1个回答
展开全部
楼主写的触发器明显错了吗,既然你是想通过更新mst_officecurrency表来达到更mst_office表的目的,那么首先下面语句是多余的,它应该是等你建好了触发器之后再在SQL窗口中写的:
update `mst_generalsetup` set `CurrencyName`=NEW.OfficeCurrencyName where `CurrencyName`=OLD.OfficeCurrencyName;
而且如果是在SQL窗口中那这样写就错了,你应该写成例如:
update mst_generalsetup set OfficeCurrencyName=新值 where OfficeCurrencyName=原来的值;
你得提供一个新值和旧值啊,不然你写了那么多new,old值,人家电脑知道你new值为多少,old值又为多少啊,所以正确的触发器是下面的写法:
create trigger t_AfterUpdate_on_mst_officecurrency
after update on mst_officecurrency
for each row
begin
update mst_office set Currency=:new.OfficeCurrencyName where Currency=:old.OfficeCurrencyName;
end;
/
创建完触发器之后再写SQL语句对mst_generalsetup表进行更新:
SQL>update mst_generalsetup set OfficeCurrencyName=新值 where OfficeCurrencyName=原来的值;
总体上就是这样,还有就是创建触发器的时候你在表名和列名前面不要加单引号,会报错的,如果还有什么问题再追问我就好了。
update `mst_generalsetup` set `CurrencyName`=NEW.OfficeCurrencyName where `CurrencyName`=OLD.OfficeCurrencyName;
而且如果是在SQL窗口中那这样写就错了,你应该写成例如:
update mst_generalsetup set OfficeCurrencyName=新值 where OfficeCurrencyName=原来的值;
你得提供一个新值和旧值啊,不然你写了那么多new,old值,人家电脑知道你new值为多少,old值又为多少啊,所以正确的触发器是下面的写法:
create trigger t_AfterUpdate_on_mst_officecurrency
after update on mst_officecurrency
for each row
begin
update mst_office set Currency=:new.OfficeCurrencyName where Currency=:old.OfficeCurrencyName;
end;
/
创建完触发器之后再写SQL语句对mst_generalsetup表进行更新:
SQL>update mst_generalsetup set OfficeCurrencyName=新值 where OfficeCurrencyName=原来的值;
总体上就是这样,还有就是创建触发器的时候你在表名和列名前面不要加单引号,会报错的,如果还有什么问题再追问我就好了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询