MySQL如何创建无需指定列的跨表行复制插入触发器?
解决方案
当两张表结构完全一致时,确实可以不用逐个指定列实现行复制,你之前直接用new报错是因为NEW是代表触发事件的行对象,需要用NEW.*来引用该行的所有列值。
修改后的触发器代码如下:
delimiter # create trigger SomeTriggerName after insert on someTable1 for each row begin insert into someTable2 values (NEW.*); end# delimiter ;
注意事项
- 这种写法依赖两张表的列顺序、列名和数据类型完全匹配,如果后续任意一张表的结构发生变更(比如新增列、调整列顺序),需要同步确保两张表结构一致,否则可能导致数据插入错位或报错。
- 你也可以用
INSERT INTO someTable2 SELECT NEW.*;,和上面的写法效果完全一致,语义上更偏向“选择行数据插入”的逻辑。
内容的提问来源于stack exchange,提问作者zozo
相关产品推荐
相关产品推荐

