【问题标题】:A trigger to calculate and print the difference between old and new salary when the salary is updated工资更新时计算和打印新旧工资差异的触发器
【发布时间】:2017-11-21 12:17:33
【问题描述】:

Employee 表定义为 Employee(eno, ename, Salary)。

写一个触发器,在工资更新时计算并打印新旧工资的差值。

我尝试了以下触发器。它似乎计算了差异。怎么打印?

DELIMITER $$
CREATE TRIGGER t1
AFTER UPDATE ON employee
FOR EACH ROW
BEGIN   
    DECLARE sal_diff DECIMAL(10,2);
    IF eno = new.eno THEN
        IF (new.salary < old.salary) THEN
            SET sal_diff = old.salary - new.salary;
        ELSE
            SET sal_diff = new.salary - old.salary;
        END IF;
    END IF;
END $$
DELIMITER ;

【问题讨论】:

  • 请编辑您的问题并添加您得到的语法错误,这将帮助我们,帮助您。
  • 打印不是mysql动词。
  • 即使没有打印语句,我也会遇到同样的错误。
  • 你需要使用 SET a = b - c (并阅读手册)
  • 谢谢!我的错。

标签: mysql triggers


【解决方案1】:

类似的东西:

DELIMITER $$
CREATE TRIGGER t1
AFTER UPDATE ON employee
FOR EACH ROW
BEGIN   
    DECLARE sal_diff DECIMAL(10,2);
    IF new.salary < old.salary THEN
       set @sal_diff = old.salary - new.salary;
    ELSE
       set @sal_diff = new.salary - old.salary;
    END IF;
   -- Use  @sal_diff where you want it;
END $$
DELIMITER ;

【讨论】:

  • 它不起作用。 ERROR 1415 (0A000): 不允许从触发器返回结果集
猜你喜欢
  • 2021-10-07
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多