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

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));

我想让部门字段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'。我做错什么了?

最佳答案

你的论点是相反的。它是IFNULL(value_to_test, value_to_use_if_null)。您正在测试0是否为空,而不是,因此您实际上正在

... SET NO_EMP = 1 + 0

你想要的
... SET NO_EMP = IFNULL(NO_EMP, 0) + 1

相反,。

关于mysql - MySQL触发器-每次将sth插入另一个表时将表的字段增加1,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29015132/

10-11 07:47