2012-06-13 35 views
0

我是新来处理触发器,我很难理解如何写一个触发器来更新一个表中的字段,当一个记录被插入到另一个表中。如何基于另一个记录插入的数据使用触发器更新一个表中的字段?

详细说明,我有2个表: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

是否可能是POST触发器 - 表示:

在您提交了传入记录之后,您需要采取进一步操作 - 即插入其他表中。

如果你这样做了PRE commit,那么你会担心Notes上发生了一些错误,并且最终可能导致状态更新不正确。

+0

谢谢你,兰迪。你的回答让我走上了正确的道路!感谢你和艾克两位! – AMPSYS

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 ; 
+0

谢谢,艾克 - 这是我最终得以工作的结果。 – AMPSYS

相关问题