Postgres函数引用NEW的行的NULL值

时间:2012-08-28 20:17:53

标签: triggers null plpgsql

我有一个触发器设置,在为表A更新或插入一行后触发。还有一个表B引用表A,但还有另一个我想要分析的列,一个布尔值(所以这个函数只能在UPDATE上使用。

当我尝试访问该列时: SELECT col1 FROM B WHERE B.aID = NEW.ID;

此列col1始终为NULL。

这是为什么?如何在更新时获得布尔值?

1 个答案:

答案 0 :(得分:3)

我必须猜测,因为你巧妙地将功能定义保密了。 (反讽意图。)

很可能您遇到了命名冲突。参数名称(INOUT参数)在函数体(几乎)中可见,并且优先于非限定列名。您是否在函数中声明col1为变量?

为避免冲突, table-qualify 列名:

SELECT b.col1 FROM tableb b WHERE b.aID = NEW.ID;

无论如何,这是一种很好的做法。

将变量名称作为前缀也是一种好习惯,因此它们通常不会与表列冲突。喜欢:_col1

如果没有解决问题,请发布完整的函数定义。