代码之家  ›  专栏  ›  技术社区  ›  Riples

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

  •  0
  • Riples  · 技术社区  · 10 年前

    我有两个表用于存储调用详细信息。一个表(call_Detail)存储输入的每个调用的标头详细信息,第二个表(call_History)存储调用的每个注释。因此,单个调用在call_Detail表中只出现一次,但可能在call_History表中出现多次。

    我当前运行一个Query,返回一组调用的最新注释。因此,我从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 回复  |  直到 10 年前
        1
  •  1
  •   Naktibalda    10 年前

    在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 ;