0

我是使用触发器的新手,当一条记录插入另一个表时,我很难理解如何编写触发器来更新一个表中的字段。

详细地说,我有 2 个表:servTickets 和 servTicketNotes。

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

servTicketNotes 只有 2 个字段 - 同样,PK 是一个 INT 字段“callID”,并且有一个称为 BLOB 字段image,用于存储服务报告的图像。

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

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

这似乎应该如此简单,但我似乎无法掌握如何开始......

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

4

2 回答 2

0

它可能是一个 POST 触发器 - 这意味着:

在您提交了传入记录之后,您想要采取进一步的行动 - 即插入到另一个表中。

如果您在提交前执行此操作,那么您会担心 Notes 上会发生一些错误,并且最终可能会导致状态更新不正确。

于 2012-06-13T15:53:26.550 回答
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 ;
于 2012-06-13T18:48:30.583 回答