【问题标题】:How to use trigger to copy tables如何使用触发器复制表
【发布时间】:2020-01-08 12:52:41
【问题描述】:

我想将table1中的数据自动复制到table2。例如:在table1中写入数据时,table2应该在table1中写入相同的数据行。需要自动复制的列名:id,abc

触发器怎么办?

编辑:这是我已经尝试过的

DELIMITER //
CREATE TRIGGER table2 AFTER UPDATE ON table1
FOR EACH ROW BEGIN  
    INSERT INTO table select * from table1 where id = NEW.id;
END;//
DELIMITER ;

它给了我一个错误

MySQL 说:#1064 - 你的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 1 行的“// CREATE TRIGGER table2 AFTER UPDATE ON table1 FOR EACH ROW BEGIN INSE”附近使用正确的语法

【问题讨论】:

  • INSERT INTO table - 这是一个拼写错误(table 是保留字)应该是 INSERT INTO table2 吗?你应该插入 NEW.values 而不是选择。
  • 您想要AFTER UPDATE 触发器还是ATER INSERT?
  • 除了保留字之外,这段代码的语法对我来说很好。您使用的是什么 UI 工具?
  • 另外你不应该给你的触发器和表同名 (table2)。
  • 请不要dekete然后重新发布相同的问题!此外,mysql 似乎您在 // 之前遇到了问题。检查那里是否有任何不可见的非打印字符。

标签: mysql mariadb


【解决方案1】:
DELIMITER //
CREATE TRIGGER mytrigger_update
AFTER INSERT ON table1
FOR EACH ROW 
BEGIN
INSERT INTO table_name(val1,va2,....)
VALUES (NEW.val1, NEW.val2, New....);
END; //

DELIMITER ;

【讨论】:

  • 这看起来更像 SQLServer 而不是 mariaDB?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-30
  • 1970-01-01
  • 2022-11-17
  • 1970-01-01
相关资源
最近更新 更多