无法将MySQL触发器设置为插入第二个表

时间:2014-08-14 13:43:48

标签: mysql triggers

我有两个用于存储呼叫详细信息的表。一个表(Call_Detail)存储针对每个输入的呼叫的标头详细信息,第二个(Call_History)存储针对该呼叫的每个评论。因此,单个调用只会在Call_Detail表中显示ONCE,但可能会在Call_History表中多次出现。

我目前运行查询以针对一组调用返回最新评论。所以,我从Call_Detail中返回标题详细信息,然后对Call_History进行交叉引用,以找到最新的'评论(感谢一些外界的帮助)。但是,在针对大量调用运行时,此查询可能非常耗时。

因此,我想要优化我的查询,我想设置一个记录这些细节的触发器。 我想要将任何INSERT命令捕获到Call_History表中,并根据相关的呼叫ID将注释和日期/时间记录到Call_Detail表中。

到目前为止,我有以下内容,但出于某种原因它并不像我的语法:

DELIMITER $$
CREATE TRIGGER Last_Call_Update
AFTER INSERT ON call_history
FOR EACH ROW
BEGIN
UPDATE call_detail
SET last_updated = NEW.updated_at, last_commment = NEW.body
WHERE id = NEW.ticket_id
END $$
DELIMITER ;

1 个答案:

答案 0 :(得分:1)

在UPDATE语句后添加分号

DELIMITER $$
CREATE TRIGGER Last_Call_Update
AFTER INSERT ON call_history
FOR EACH ROW
BEGIN
    UPDATE call_detail
    SET last_updated = NEW.updated_at, last_commment = NEW.body
    WHERE id = NEW.ticket_id;
END $$
DELIMITER ;