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

PostgreSQL中为car表创建增删改触发同步至car2表的Trigger

在PostgreSQL中为car表创建同步触发器到car2

要实现当car表发生插入、更新或删除操作时,将对应记录同步到car2表,你需要分两步:创建触发器函数和创建触发器,具体操作如下:

1. 创建触发器函数

这个函数会根据car表的操作类型(插入/更新/删除),将对应记录插入到car2表,同时自动填充InsertionDate字段为当前时间:

CREATE OR REPLACE FUNCTION sync_car_to_car2()
RETURNS TRIGGER AS $$
BEGIN
    -- 根据操作类型选择对应的记录
    CASE TG_OP
        WHEN 'INSERT', 'UPDATE' THEN
            INSERT INTO car2 (ID, Name, Location, InsertionDate)
            VALUES (NEW.ID, NEW.Name, NEW.Location, CURRENT_TIMESTAMP);
        WHEN 'DELETE' THEN
            INSERT INTO car2 (ID, Name, Location, InsertionDate)
            VALUES (OLD.ID, OLD.Name, OLD.Location, CURRENT_TIMESTAMP);
    END CASE;
    RETURN NULL; -- 因为是AFTER触发器,返回值不影响原表操作
END;
$$ LANGUAGE plpgsql;

关键说明:

  • TG_OP是PostgreSQL内置的触发器变量,用于判断当前触发的操作类型
  • 插入、更新操作使用NEW变量获取操作后的记录;删除操作使用OLD变量获取被删除的记录
  • CURRENT_TIMESTAMP自动生成当前时间戳,填充到car2的InsertionDate字段

2. 创建触发器

将上面的函数绑定到car表,指定触发时机为插入、更新、删除操作完成后:

CREATE TRIGGER trigger_car_sync_to_car2
AFTER INSERT OR UPDATE OR DELETE ON car
FOR EACH ROW EXECUTE FUNCTION sync_car_to_car2();

关键说明:

  • FOR EACH ROW表示每一条记录的操作都会触发该函数(而非针对整个SQL语句)
  • 触发器会在car表的每一条记录被插入、更新或删除后,自动执行同步逻辑

额外注意事项

  • 若car2表尚未创建,可使用以下语句创建:
CREATE TABLE car2 (
    ID INT,
    Name VARCHAR(255),
    Location VARCHAR(255),
    InsertionDate TIMESTAMP
);
  • 确保car与car2的对应字段类型匹配,若有差异需调整函数中的字段赋值逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 10:57:11