PostgreSQL触发器函数创建报错求助:NEW关键字附近语法错误
PostgreSQL触发器函数语法错误排查
问题代码
CREATE OR REPLACE FUNCTION Cree_RefFacture() RETURNS trigger AS $BODY$ BEGIN NEW."RefFacture" := nextval("dbo.Base_Factures_RefFacture_seq"); RETURN NEW; END; $BODY$ LANGUAGE plpgsql;
错误信息
Syntax error on or near “NEW”
LINE 7:NEW."RefFacture":=nextval"dbo.Base_Factures_RefFacture_seq");
修复方案
- 核心语法错误:
nextval是PostgreSQL内置函数,调用时必须用括号包裹参数。错误行中nextval直接拼接序列名,缺少左括号,正确写法应为nextval("dbo.Base_Factures_RefFacture_seq")。 - 额外校验:确保代码中所有引号均为英文双引号,避免中文引号引发的语法识别异常。
修复后的完整代码:
CREATE OR REPLACE FUNCTION Cree_RefFacture() RETURNS trigger AS $BODY$ BEGIN NEW."RefFacture" := nextval("dbo.Base_Factures_RefFacture_seq"); RETURN NEW; END; $BODY$ LANGUAGE plpgsql;
若修复后仍报错,需确认序列dbo.Base_Factures_RefFacture_seq已存在,且当前执行用户拥有该序列的访问权限。
内容的提问来源于stack exchange,提问作者Dan Ed
相关产品推荐
相关产品推荐

