1

这是我的创建触发器。我希望在插入 vhftofass 时执行此查询(UPDATE vhf_msg_rx SET msg_text="";),这意味着它使此表为空 vhf_msg_rx。但是当我在插入查询后编写该查询时,它会出错(无法更新表'vhf_msg_rx'存储函数/触发器,因为它已被调用此存储函数/触发器的语句使用。)请帮助我如何做到这一点

CREATE
    /*!50017 DEFINER = 'root'@'localhost' */

    TRIGGER `VHFtoFASS` AFTER UPDATE ON `vhf_msg_rx` 
    FOR EACH ROW BEGIN
    INSERT INTO  vhftofass  SELECT NULL,msg_text,NOW(),0 FROM vhf_msg_rx WHERE  msg_text<>"";
    END;
$$
4

1 回答 1

0

我不完全清楚您要做什么,但似乎您想将一个表的修改行复制到另一个表中,但只保留某些字段。例如,您可以通过NEW.columnnameFOR EACH ROW循环内引用插入的记录来做到这一点

CREATE TRIGGER `VHFtoFASS` AFTER UPDATE ON `vhf_msg_rx` 
FOR EACH ROW BEGIN
    INSERT INTO  vhftofass VALUES(NULL,NEW.msg_text,NOW(), 0);
END;

请注意,这只会处理更新 - 您需要一个 INSERT 触发器来捕获新行。

于 2013-07-18T07:28:13.517 回答