我有一个触发器设置,在为表A更新或插入一行后触发。还有一个表B引用表A,但还有另一个我想要分析的列,一个布尔值(所以这个函数只能在UPDATE上使用。
当我尝试访问该列时:
SELECT col1 FROM B WHERE B.aID = NEW.ID;
此列col1
始终为NULL。
这是为什么?如何在更新时获得布尔值?
答案 0 :(得分:3)
我必须猜测,因为你巧妙地将功能定义保密了。 (反讽意图。)
很可能您遇到了命名冲突。参数名称(IN
和OUT
参数)在函数体(几乎)中可见,并且优先于非限定列名。您是否在函数中声明col1
为变量?
为避免冲突, table-qualify 列名:
SELECT b.col1 FROM tableb b WHERE b.aID = NEW.ID;
无论如何,这是一种很好的做法。
将变量名称作为前缀也是一种好习惯,因此它们通常不会与表列冲突。喜欢:_col1
。
如果没有解决问题,请发布完整的函数定义。