如何根据来自另一个表中的记录插入数据,使用触发器更新一个表中的字段?

时间:2012-06-13 15:45:41

标签: mysql triggers

我刚开始使用触发器,并且在将记录插入另一个表时,我很难理解如何编写触发器来更新一个表中的字段。

详细说明,我有两个表:servTickets和servTicketNotes。

servTickets有几个文本字段用于客户,联系人,电话,电子邮件,问题描述,状态等...此表中的PK是一个名为callID的INT字段。

servTicketNotes只有2个字段 - 再次,PK是INT字段'callID',还有一个名为image的BLOB字段,用于存储服务报告的图像。

我正在努力做的是在servTicketNotes中插入新记录时,触发器更新servTickets中的status字段,值为Closed

我很困惑,如果这是一个INSERT AFTER或BEFORE或BOTH场景,但基本上如果发送报告(从而在servTicketNotes中创建记录,我希望触发器在同一个callID中寻找记录servTickets表并将状态值更改为“已关闭”。

这看起来应该很简单,但我似乎无法掌握如何开始......

提前感谢您的帮助/指导!

2 个答案:

答案 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 ;