MySQL触发INSERT所有NEW列

时间:2015-11-15 21:58:55

标签: mysql triggers insert

是否可以触发新行的所有列的插入?基本上,我想在另一个表中复制新插入的记录,但是必须指定所有列。

这样的东西
DELIMITER $$

CREATE TRIGGER TestTrigger
AFTER INSERT
   ON Table1 FOR EACH ROW

BEGIN
    INSERT INTO `Table2` SELECT * FROM NEW;
END$$
DELIMITER ;

但是每当我尝试在Table 'Database.NEW' doesn't exist中插入新行时,都会返回Table1

From MySQL documentation

  

在触发器主体中,您可以使用别名OLD和NEW来引用主题表(与触发器关联的表)中的列。 OLD.col_name在更新或删除之前引用现有行的列。 NEW.col_name引用要插入的新行的列或更新后的现有行。

1 个答案:

答案 0 :(得分:1)

尽管这个问题没有得到解决,但如果你有一个主要密钥,你可以SELECT使用主键的所有字段。

CREATE TRIGGER replicated_table AFTER INSERT ON source_table FOR EACH ROW
BEGIN
    INSERT INTO replicated_table SELECT * FROM source_table WHERE id=NEW.id;
END

此外,也许您可​​以更喜欢使用REPLACE而不是INSERT来确保表格不会超出合并范围。