在表1上插入后触发,在表2中插入表1中where condition列

时间:2015-10-13 03:51:41

标签: php mysql

我的触发器根本不起作用。

DELIMITER $$
CREATE TRIGGER leave_credit_nt
AFTER INSERT ON employees
FOR EACH ROW
BEGIN
INSERT INTO nonteaching_leavecredit (IdNum, Date_Hired, Emp_Stat, Date_Leave_Ac, Vac_Leave, Sick_Leave)
VALUES (new.IdNum, new.Date_Hired, new.Emp_Stat, new.Date_Hired + INTERVAL 1 YEAR, 0, 0)
WHERE employees.Emp_Type = 'NON-TEACHING';
END $$

DELIMITER

我想触发器会将值插入到我的第二个表中,只有那些带有employees.emp_type ='NON-TEACHING'的值。有人可以帮助我让这个触发器工作吗?

emp_type是我的员工中的一列。

2 个答案:

答案 0 :(得分:3)

您的INSERT查询错误。 MySQL INSERT语法不支持WHERE子句,因此您的查询将失败。

您无法在WHERE查询中使用INSERT条件。如果您使用WHERE条件,则表示您已在表中拥有该行。因此,您应该使用UPDATE查询而不是INSERT

答案 1 :(得分:0)

您可以使用以下方法为触发器添加条件逻辑:

if new.Emp_Type = 'NON-TEACHING' then
    INSERT INTO nonteaching_leavecredit (IdNum, Date_Hired, Emp_Stat, Date_Leave_Ac, Vac_Leave, Sick_Leave)
    VALUES (new.IdNum, new.Date_Hired, new.Emp_Stat, new.Date_Hired + INTERVAL 1 YEAR, 0, 0);
end if;