Mysql 我正在尝试学习sql上的触发器,并得到以下错误

Mysql 我正在尝试学习sql上的触发器,并得到以下错误,mysql,triggers,Mysql,Triggers,这是我正在执行的代码 create trigger salarydifff after update on office for each row declare sal_diff number begin sal_diff := :new.salary- :old.salary end 我得到了以下错误: Error Code : 1064 You have an error in your SQL syntax; check the manual that corr

这是我正在执行的代码

create trigger salarydifff  
after update on office  
for each row  
declare sal_diff number  
begin  
sal_diff := :new.salary- :old.salary  
end
我得到了以下错误:

Error Code : 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'declare sal_diff number begin sal_diff := :new.salary- :old.salary end' at line 4

您的代码看起来像Oracle而不是mysql Mysql看起来像这样

drop trigger if exists salarydiff;
delimiter //

create trigger salarydifff  
after update on office 
for each row  
begin
declare sal_diff integer ; 

set sal_diff = new.amt - old.amt ; 
end //

delimiter ;

@juergend没有收到你的评论。你能详细说明一下吗?你应该得到一个数据库工具,比如MySQL Workbench,然后一步一步地检查错误。查看如何声明变量。错误显示问题的确切位置->声明。没有不精确的
number
数据类型。我也尝试过将其更改为整数,但没有太大区别@juergend你能帮我处理实际的代码吗。非常感谢@P.SalmonAlso我还有一个疑问。我想显示变量sal_diff的值,但由于触发器无法返回值,因此无法显示该值。这是满足要求标准的另一种方法@P.salmoni如果您想记录更改,那么您可以创建一个日志文件并从触发器插入到其中,然后在方便的时候从中选择。您能详细说明一下吗@鲑鱼