我刚开始使用触发器,并且在将记录插入另一个表时,我很难理解如何编写触发器来更新一个表中的字段。
详细说明,我有两个表:servTickets和servTicketNotes。
servTickets有几个文本字段用于客户,联系人,电话,电子邮件,问题描述,状态等...此表中的PK是一个名为callID
的INT字段。
servTicketNotes只有2个字段 - 再次,PK是INT字段'callID',还有一个名为image
的BLOB字段,用于存储服务报告的图像。
我正在努力做的是在servTicketNotes中插入新记录时,触发器更新servTickets中的status
字段,值为Closed
。
我很困惑,如果这是一个INSERT AFTER或BEFORE或BOTH场景,但基本上如果发送报告(从而在servTicketNotes中创建记录,我希望触发器在同一个callID中寻找记录servTickets表并将状态值更改为“已关闭”。
这看起来应该很简单,但我似乎无法掌握如何开始......
提前感谢您的帮助/指导!
答案 0 :(得分:0)
它可能是一个POST触发器 - 这意味着:
在您提交传入记录后,您希望采取进一步行动 - 即插入另一个表格。
如果你这样做PRE提交,那么你会担心Notes上发生了一些错误,你最终可能会错误地更新状态。
答案 1 :(得分:0)
您可以使用AFTER INSERT触发器执行此操作。尝试这样的事情:
DELIMITER $$
DROP TRIGGER IF EXISTS tr_a_ins_servTicketNotes $$
CREATE TRIGGER pabeta.tr_a_ins_servTicketNotes AFTER INSERT ON servTicketNotes FOR EACH ROW BEGIN
update servTickets
set status = 'Closed'
where callID = NEW.callID;
END $$
DELIMITER ;