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

PostgreSQL中插入包含$$的字符串时遇到问题求助

问题排查与解决:PL/pgSQL中插入含$$的字符串导致语法异常

你的代码出现异常的核心原因是DO块使用的分隔符$$与bio字段值中的$$冲突——PostgreSQL会把字符串里的$$误认为是DO块的结束标记,从而触发语法错误。

解决方法:更换DO块的分隔符

选择一个不会出现在字符串内容中的自定义分隔符(比如$user_sync_block$),替换原有的$$即可避免冲突。修改后的代码如下:

DO $user_sync_block$
DECLARE newId bigint;
BEGIN 
    INSERT INTO users("email","bio","status","created_by","updated_by")
    VALUES ('tetsinsert@gmail.com','❄❄Haocute$$','accepted','1','1')
    RETURNING id INTO newId;

    UPDATE synces SET "version" = "version" + 1, updated_at = now(),
    new_id = newId WHERE "old_id" = 98525 and table_name = 'users'; 
    IF NOT FOUND THEN 
        INSERT INTO synces
        (created_at, updated_at, deleted_at, table_name, old_id, new_id, "version")
        VALUES(now(), now(), null, 'users', 98525, newId, 0);
    END IF;
END $user_sync_block$

补充说明

  • 自定义分隔符可以是任意由$包裹的字符串,只要不与代码中的字符串内容重复即可;
  • 若后续字符串中可能出现其他特殊分隔符,也可以选择对字符串中的$进行转义,但更换分隔符是更简洁可靠的方案;
  • 确认users和synces表的字段名确实需要双引号(仅当字段名包含大小写混合、特殊字符或保留字时才需要),如果是小写常规字段,可去掉双引号简化代码。

内容的提问来源于stack exchange,提问作者Tuấn Trương Quốc

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 04:00:58