4

我尝试在触发函数中调试时出错。在 Postgres 日志中,我有以下内容:

2012-08-16 21:41:23 PDT ERROR:  Unknown period: D
2012-08-16 21:41:23 PDT CONTEXT:  PL/pgSQL function "handle_promotion_update" 
    line 60  at assignment
SQL statement "UPDATE promotion SET some_column = foo + 1
    WHERE id = NEW.promotion_id"
PL/pgSQL function "handle_new_reward" line 94 at SQL statement

所以,看来我的问题可能从“第 60 行”开始

我的问题是,行号从哪里开始?如果我进入 pgAdmin 并查看函数声明,它的顶部有“帮助器”(如删除函数)。所以,我不认为它来自那里。但是,它是否包括函数声明?或者它只是从线BEGIN

4

1 回答 1

3

您在 PostgreSQL 服务器日志中看到的行号从函数体的左引号行开始。您必须在此之前添加行才能在 pgAdmin SQL 编辑器中获得绝对行号。

不要混淆:如果您在尝试创建函数时遇到错误,您会得到不同的行号:它们指的是整个执行的脚本,而运行时错误中的行号指的是函数体。

于 2012-08-17T05:10:01.153 回答