【问题标题】:Copy entire row from one table to another in MYSQL trigger在MYSQL触发器中将整行从一个表复制到另一个表
【发布时间】:2018-01-10 20:14:49
【问题描述】:

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

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

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

BEGIN
   insert into Table2 SELECT * FROM NEW;
END

谢谢

【问题讨论】:

    标签: mysql


    【解决方案1】:

    这行得通

      insert into Table2 SELECT * FROM Table1 where id=new.id;
    

    【讨论】:

      【解决方案2】:

      您的第二个 SQL 很好,但您必须先进行一次查询才能在您的选择中使用星号:

      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;
      

      【讨论】:

      • 谢谢我的朋友,但是mysql似乎不支持IDENTIY_INSERT,它给我一个错误
      • 我对我的帖子进行了一些编辑,你能试试这个吗?还有,你能给我们你的mysql的版本吗,它会有所帮助
      • mysql 5.6.34-79.1,抱歉,这些编辑都不适合我
      猜你喜欢
      • 1970-01-01
      • 2014-02-06
      • 1970-01-01
      • 1970-01-01
      • 2012-06-09
      • 1970-01-01
      • 1970-01-01
      • 2015-05-17
      • 2012-08-12
      相关资源
      最近更新 更多