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

如何在PostgreSQL触发器函数中修改NEW记录关联模型名称

解决PostgreSQL触发器通知返回关联表model_name的问题

修改触发器函数实现关联查询

原来的触发器函数仅返回overrides表的新记录数据,现在需要在函数内部关联models表获取对应的model_name,再构造包含该字段的JSON发送通知。

具体SQL代码

CREATE OR REPLACE FUNCTION NotifyOnDataChange()
RETURNS TRIGGER AS $$
DECLARE
  v_model_name models.Model_name%TYPE;
BEGIN
  -- 根据新插入记录的model_id查询对应model_name
  SELECT Model_name INTO v_model_name
  FROM models
  WHERE id = NEW.model_id;

  -- 构造包含model_name的通知JSON(可按需保留model_id)
  PERFORM pg_notify('datachange', json_build_object(
    'id', NEW.id,
    'value', NEW.value,
    'model_name', v_model_name
    -- 若需要保留model_id,添加:'model_id', NEW.model_id
  )::TEXT);

  RETURN NEW;
END;
$$ LANGUAGE plpgsql;

可选处理:避免model_name为NULL

如果overrides表的model_id没有外键约束,可能存在关联不到models记录的情况,可通过COALESCE设置默认值:

SELECT COALESCE(Model_name, '未找到对应模型') INTO v_model_name
FROM models
WHERE id = NEW.model_id;

生效说明

修改完触发器函数后,无需调整已创建的触发器(因为触发器是调用该函数执行逻辑)。后续新增overrides记录时,datachange通道的通知消息会直接包含model_name字段,你的.NET应用可以直接解析使用,无需再二次查询数据库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 18:17:06