在MYSQL触发器中将整行从一个表复制到另一个表

时间:2017-08-03 09:45:03

标签: mysql

我有两个具有相同模式的表,我想在触发器中将新插入的记录从table1复制到table2,我的代码在下面并且有效,但只复制id字段

BEGIN
   insert into Table2 (id) values (new.id);
END

然而表中有很多列,是否有办法将整个记录复制到table2中而不指定所有列和值,如下所示

BEGIN
   insert into Table2 SELECT * FROM NEW;
END

由于

2 个答案:

答案 0 :(得分:0)

你的第二个SQL很好,但是你必须首先进行一个查询才能使用select into中的星号:

SET IDENTITY_INSERT NEW ON

然后:

BEGIN
   insert into Table2 SELECT * FROM NEW;
END

不要忘记在最后把它关掉

编辑1

如果它不起作用,可能会尝试优先考虑你的sql:

INSERT INTO `Table2` (SELECT * FROM `NEW`);

编辑2

如果它仍然不起作用,也许您可​​以尝试直接创建包含所有元素的表:

CREATE TABLE Table2 [AS] SELECT * FROM NEW;

答案 1 :(得分:0)

这有效

gql('my query')