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

PostgreSQL中如何将NEW/OLD对象转换为文本?

解决方案

1. 直接将NEW/OLD对象转为完整JSON文本

要获取NEW/OLD对象的完整JSON字符串,只需用row_to_json()转换后直接做类型转换即可:

row_to_json(NEW)::text

这会直接返回类似'{"id":1,"name":"test","value":"foo"}'的完整JSON文本。

2. 构造包含ChangeType的完整JSON对象

不要手动用CONCAT拼接JSON(容易出现转义错误),推荐用PostgreSQL内置的json_build_object()来构造目标JSON,再转为文本:

json_build_object(
    'ChangeType', 'INSERT',
    'NEW', row_to_json(NEW)
)::text

执行后会得到你想要的格式:'{"ChangeType":"INSERT","NEW":{"a":{"b":"foo"}}}'

如果使用JSONB类型(性能更优),可以用to_jsonb()和jsonb_build_object():

jsonb_build_object(
    'ChangeType', 'INSERT',
    'NEW', to_jsonb(NEW)
)::text

你之前的错误原因

你尝试的->> '{}'、#>> '{}'、json_extract_path_text(..., '{}')都是提取JSON内部特定字段/路径的语法,不是用来获取整个JSON对象的。row_to_json(NEW)本身已经是完整的JSON对象,不需要额外的路径提取操作,直接转成文本就能得到完整内容。

内容的提问来源于stack exchange,提问作者ahmet gül

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 08:50:38