0

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

当我尝试访问该列时:

SELECT col1 FROM B WHERE B.aID = NEW.ID;

此列col1始终为 NULL。

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

4

1 回答 1

3

很可能您遇到了命名冲突。参数名称(INOUT参数)在函数体中(几乎)任何地方都可见,并且优先于不合格的列名。您是否在函数中声明col1为变量?

为避免冲突,请对列名进行表限定:

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

在任何情况下,这都是很好的做法。

给变量名加上前缀也是一种好习惯,这样它们通常不会与表列冲突。喜欢:_col1

于 2012-08-29T07:02:58.367 回答