【问题标题】:TRIGGER AFTER UPDATE - copy to another table更新后触发 - 复制到另一个表
【发布时间】:2016-01-31 04:53:01
【问题描述】:

我想创建一个 TRIGGER AFTER UPDATE ,它将刚刚在 TABLE_1 中更新的行复制到 TABLE_2。

此代码在更新多行后引发错误:SQL 错误 (1062): Duplicate entry '1' for key 'PRIMARY'

我知道这段代码不对,但我就是不知道如何操作已更新的行。

CREATE DEFINER=`companyERP`@`%` TRIGGER `trigger` AFTER INSERT ON `Table_1`
FOR EACH ROW BEGIN
INSERT INTO Table_2 SELECT *
FROM Table_1;
END

提前感谢您的帮助。

【问题讨论】:

标签: mysql sql mysqli


【解决方案1】:
CREATE DEFINER=`companyERP`@`%` TRIGGER `trigger` AFTER INSERT ON `Table_1`
FOR EACH ROW BEGIN
INSERT INTO Table_2 SELECT new.Field1, newField2 ...
FROM Table_1
END

【讨论】:

    【解决方案2】:

    试试:

    /*
    CREATE DEFINER=`companyERP`@`%` TRIGGER `trigger` AFTER INSERT ON `Table_1`
    FOR EACH ROW BEGIN
    INSERT INTO Table_2 SELECT *
    FROM Table_1;
    END
    */
    
    DELIMITER //
    
    CREATE TRIGGER `trigger` AFTER UPDATE ON `Table_1`
    FOR EACH ROW
    BEGIN
      INSERT INTO `Table_2`
        (`id_table_1`, `old_value`, `created_at`)
      VALUES
        (OLD.`id`, OLD.`value`, NOW());
    END//
    
    DELIMITER ;
    

    SQL Fiddle demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-15
      • 1970-01-01
      • 2020-08-23
      • 1970-01-01
      相关资源
      最近更新 更多