首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表1上的insert之后的触发器,以及表1中where条件列的表2上的insert

表1上的insert之后的触发器,以及表1中where条件列的表2上的insert
EN

Stack Overflow用户
提问于 2015-10-13 11:51:41
回答 2查看 34关注 0票数 2

我的扳机根本不起作用。

代码语言:javascript
复制
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 =‘非示教’的值插入到我的第二个表中。有没有人能帮我修一下扳机?

emp_type是我的表employees中的一列。

EN

回答 2

Stack Overflow用户

发布于 2015-10-13 11:54:31

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

不能对INSERT查询使用WHERE条件。如果您使用的是WHERE条件,这意味着您在表中已经有该行。因此,您应该使用UPDATE查询而不是INSERT

票数 3
EN

Stack Overflow用户

发布于 2015-10-13 12:37:53

您可以使用以下命令将条件逻辑添加到触发器:

代码语言:javascript
复制
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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33093816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档