我有两张桌子:EMPLOYEE和DEPARTMENT。他们有以下描述。
EMPLOYEE: NAME, SSN, SALARY, DNO
DEPARTMENT: NAME, DNO, TOTAL_SAL
SSN是EMPLOYEE的主要密钥,DNO是DEPARTMENT的主要密钥。 EMPLYEE.DNO是引用DEPARTMENT.DNO的外键。 EDEPARTMENT.TOTAL_SAL是一个派生字段,用于存储给定部门员工的工资总和。
我想开发触发器来保持TOTAL_SAL最新。
例如,我有以下触发器,可以在插入新的amployee时使TOTAL_SAL保持最新状态。
DELIMITER |
CREATE TRIGGER total_sal_trg
BEFORE INSERT ON EMPLOYEE
FOR EACH ROW
BEGIN
UPDATE DEPARTMENT
SET TOTAL_SAL=TOTAL_SAL+NEW.SALARY
WHERE DEPARTMENT.DNO=NEW.DNO;
END|
DELIMITER ;
但是,TOTAL_SAL也可以在其他3个事件中更改:
1-When the salary of some employee is changed.
2-When the department of some employee is changed.
3-When some employee is removed.
对于覆盖1和2,我试图开发一个触发器,当在表EMPLOYEE上发生UPDATE事件时触发。也就是说,我试图为这两种情况开发一个触发器。但是,为此,我需要知道员工的哪个领域已经改变。如果部门改变了,我需要做点什么。如果工资发生了变化,就必须做其他事情。
有没有办法知道在触发触发器的UPDATE事件中是否更改了字段?
是否有其他方法可以实现覆盖事件1和2的触发器?
我正在使用MySQL 5.7。
提前谢谢你。 最好的问候。