是否可以触发NEW行的所有列的插入?基本上,我想在另一个表中复制新插入的记录,但必须指定所有列。
类似的东西
DELIMITER $$
CREATE TRIGGER TestTrigger
AFTER INSERT
ON Table1 FOR EACH ROW
BEGIN
INSERT INTO `Table2` SELECT * FROM NEW;
END$$
DELIMITER ;
然而,每当我试图在Table1
中插入新行时,它都会返回Table 'Database.NEW' doesn't exist
。
来自MySQL文档:
在触发器主体中,可以使用别名OLD和NEW引用主题表(与触发器关联的表)中的列。OLD.col_name是指更新或删除现有行之前的列。NEW.col_name是指要插入的新行或更新后的现有行的列。
尽管这个问题一直没有得到回答,但如果您有主键,您可以使用源表中的主键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
,以确保表不会脱离sincronization。