You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL实现从表1自动增删改同步表2的方法咨询

解决MySQL表1增删改自动同步到表2的方案

你遇到的问题很典型:一次性的INSERT ... SELECT只能批量导入一次数据,既没法自动同步后续的新增/更新/删除操作,还会因为没有重复判断导致大量冗余数据。要实现实时自动同步,MySQL的**触发器(Trigger)**是最适合的方案,它能在表1发生增、删、改操作时自动触发同步逻辑到表2。

前提准备

首先要确保表2的id字段是主键或唯一键,这样我们能通过id精准匹配表1和表2的对应记录,避免重复并保证更新/删除的准确性。如果还没设置,先执行:

ALTER TABLE table2 ADD PRIMARY KEY (id);

创建三个触发器分别处理增、改、删同步

我们需要创建3个触发器,分别对应表1的INSERT、UPDATE、DELETE操作:

1. 处理新增同步(INSERT触发器)

当表1插入新记录时,自动同步到表2;如果表2已存在对应id的记录(比如之前同步过),则更新该记录避免重复:

DELIMITER //
CREATE TRIGGER sync_table1_to_table2_insert
AFTER INSERT ON table1
FOR EACH ROW
BEGIN
    INSERT INTO table2 (id, title, sku, brand)
    VALUES (NEW.id, NEW.title, NEW.sku, NEW.brand)
    ON DUPLICATE KEY UPDATE
        title = NEW.title,
        sku = NEW.sku,
        brand = NEW.brand;
END //
DELIMITER ;

2. 处理更新同步(UPDATE触发器)

当表1的记录被更新时,自动更新表2中对应id的记录:

DELIMITER //
CREATE TRIGGER sync_table1_to_table2_update
AFTER UPDATE ON table1
FOR EACH ROW
BEGIN
    UPDATE table2
    SET title = NEW.title,
        sku = NEW.sku,
        brand = NEW.brand
    WHERE id = NEW.id;
END //
DELIMITER ;

3. 处理删除同步(DELETE触发器)

当表1的记录被删除时,自动删除表2中对应id的记录:

DELIMITER //
CREATE TRIGGER sync_table1_to_table2_delete
AFTER DELETE ON table1
FOR EACH ROW
BEGIN
    DELETE FROM table2
    WHERE id = OLD.id;
END //
DELIMITER ;

额外说明

  • 触发器是行级触发,表1每一行的增删改操作都会触发同步,确保数据实时一致。
  • 如果你需要给表2的code1、code2字段设置默认值或其他业务逻辑,可以在触发器中补充(比如code1 = DEFAULT或者关联其他表赋值)。
  • 测试时可以依次执行表1的增、改、删操作,检查表2的数据是否同步变化。
  • 创建触发器需要TRIGGER权限,确保执行SQL的账号拥有该权限。

内容的提问来源于stack exchange,提问作者CSM Media

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:46:32