Mysql触发器 - 每次将sth插入另一个表时,将表的字段增加1

时间:2015-03-12 16:24:43

标签: mysql triggers sql-update

我有一张员工和一个部门的表格。

DEPT(DEPTNO INT(2),DNAME VARCHAR(45),NO_EMP INT(5),PRIMARY KEY(DEPTNO));

EMP(EMPNO INT(3),EMPNAME VARCHAR(45),DEPTNO INT(2),PRIMARY KEY(EMPNO),
FOREIGN KEY(DEPTNO) REFERENCES DEPT (DEPTNO));

我希望DEPT的字段NO_EMP拥有在该部门工作的员工数量。

CREATE TRIGGER EMPL
BEFORE INSERT ON EMP
FOR EACH ROW 
UPDATE DEPT SET NO_EMP=1+IFNULL(0,NO_EMP) WHERE DEPT.DEPTNO=NEW.DEPTNO;

上面的触发器只将DEPT.NO_EMP增加一次。它不会超过1'。我做错了什么?

1 个答案:

答案 0 :(得分:1)

你的ifnull()论点是倒退的。它是IFNULL(value_to_test, value_to_use_if_null)。您正在测试0是否为空,而不是,因此您正在有效地进行

... SET NO_EMP = 1 + 0

你想要

... SET NO_EMP = IFNULL(NO_EMP, 0) + 1

代替。