如何创建具有多对多关系的触发器?

时间:2021-05-27 07:15:53

标签: mysql sql database

我的任务是当员工接受新教育时给工资加 10

这是我现在的触发器:

CREATE TRIGGER t BEFORE INSERT
ON mydb.employee_has_edu FOR EACH ROW
UPDATE mydb.employee
SET employee.salary = employee.salary + 10

数据库架构如下所示: enter image description here

2 个答案:

答案 0 :(得分:0)

答案其实很简单:

DROP TRIGGER if exists t;
CREATE TRIGGER t AFTER INSERT
ON mydb.employee_has_edu FOR EACH ROW
UPDATE mydb.employee
SET employee.salary = employee.salary + 10
WHERE employee.id_employee = NEW.id_emp;

答案 1 :(得分:0)

您已经很接近解决方案了,但是当有人添加新的教育时,您会使用触发器更新所有员工的工资。

UPDATE mydb.employee
SET employee.salary = employee.salary + 10
where id_employee = :new.id_employee

我也更喜欢使用 AFTER INSERT 触发器而不是 BEFORE INSERT。 BEFORE INSERT 用于保护针对不一致数据的完整性限制,但 AFTER INSERT 用于应用业务规则。