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

在触发器函数中能否使用变量字段名读取NEW记录?

在PostgreSQL触发器函数中动态读取NEW记录的字段值

当需要在触发器函数里通过变量动态读取NEW记录的字段值时,以下两种尝试写法无法生效:

错误写法1

DECLARE
  _fieldName VARCHAR:='';
  _fieldValue VARCHAR;
BEGIN 
  _fieldName = 'field1';
  _fieldValue =  new[_fieldName];

PostgreSQL不支持通过数组下标语法new[_fieldName]动态引用记录字段。

错误写法2

execute 'select NEW.$1', into _fieldValue using _fieldName;

该写法中$1会被当作参数传入字段名,但无法直接替换NEW的字段名,导致语法逻辑错误。

正确解决方案

execute 'select $1.' || _fieldName using NEW into _fieldValue;

通过EXECUTE动态拼接SQL语句:将NEW记录作为参数$1传入,再拼接变量_fieldName指定的字段名,以此实现动态读取对应字段的值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 19:15:38