我的任务是当员工接受新教育时给工资加 10
这是我现在的触发器:
CREATE TRIGGER t BEFORE INSERT
ON mydb.employee_has_edu FOR EACH ROW
UPDATE mydb.employee
SET employee.salary = employee.salary + 10
答案 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 用于应用业务规则。