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

在PostgreSQL中创建触发器:实现表A插入数据同步至表B

嘿,这个同步需求用触发器就能轻松搞定!我给你分常见数据库类型来写示例,保证你一看就会~

MySQL 实现方案

首先确认两张表A和B的字段结构完全匹配(你已经明确都是a_name、a_num、a_addr,这点没问题),然后创建一个AFTER INSERT触发器,每次往A插入记录后自动同步到B:

DELIMITER //
CREATE TRIGGER sync_a_to_b AFTER INSERT ON A
FOR EACH ROW
BEGIN
    -- 直接把新插入的记录字段值插入到B表
    INSERT INTO B(a_name, a_num, a_addr)
    VALUES(NEW.a_name, NEW.a_num, NEW.a_addr);
END //
DELIMITER ;

小细节说明:

  • DELIMITER //是临时修改SQL语句的结束符,避免触发器内部的分号和默认结束符冲突,写完触发器后再改回;
  • FOR EACH ROW表示每插入一行数据就触发一次同步逻辑
  • NEW是MySQL的关键字,代表刚插入到A表的那条新记录

SQL Server 实现方案

SQL Server的触发器语法略有不同,它用inserted虚拟表来存放刚插入的记录(天然支持批量插入的场景),代码如下:

CREATE TRIGGER sync_a_to_b ON A
AFTER INSERT
AS
BEGIN
    SET NOCOUNT ON; -- 关闭影响行数的提示,避免干扰业务逻辑
    -- 从inserted虚拟表中取出新增数据插入到B表
    INSERT INTO B(a_name, a_num, a_addr)
    SELECT a_name, a_num, a_addr FROM inserted;
END

一些实操注意事项

  • 确保创建触发器的数据库账号拥有CREATE TRIGGER权限,以及对B表的INSERT权限
  • 如果后续修改了A或B的表结构(比如新增/删除字段),记得同步更新触发器的字段列表,否则会出现字段不匹配的报错
  • 如果存在重复数据插入的风险(比如B表有唯一键约束),可以在插入语句里添加冲突处理逻辑:MySQL用ON DUPLICATE KEY UPDATE,SQL Server用MERGE语句
  • 批量插入大量数据时,触发器会稍微影响性能,不过普通业务场景下完全不用担心

内容的提问来源于stack exchange,提问作者Mingg Lex

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:33:23