我有一个错误,我正在尝试在触发器功能中进行调试。在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并查看函数声明,它顶部有“helper”(如删除函数)。所以,我认为不是从那里开始的。但是,它是否包括函数声明?或者它只是来自BEGIN
的行?
答案 0 :(得分:3)
您在PostgreSQL服务器日志中看到的行号从函数体的开头引号开始。您必须在此之前添加行以获得pgAdmin SQL编辑器中的绝对行号。
不要混淆:如果在尝试创建函数时遇到错误,则会得到不同的行号:它们将执行的脚本作为一个整体引用,而运行时错误中的行号引用函数体。