假设我有一个plpgsql函数
CREATE OR REPLACE FUNCTION function_name
RETURNS TRIGGER AS ...
BEGIN
PERFORM
1
FROM
table1 t1
JOIN
table2 t2 USING( column_name )
WHERE
t1.column_name = NEW.column_name;
RETURN NEW;
END;
DROP TRIGGER IF EXISTS trigger_name
ON table1;
CREATE TRIGGER trigger_name
BEFORE INSERT ON table1
FOR EACH ROW EXECUTE PROCEDURE function_name;
我注意到 table1
以及 table2
可使用 NEW.column_name
. 如何查看可以访问的列的完整列表 NEW
?
另外,如果 table1
或者 table2
我无法访问的 NEW
,我怎样才能让您 NEW
?
1条答案
按热度按时间n8ghc7c11#
看这一行:
这告诉您触发器是在
INSERT ON table1
. 这意味着你将NEW.
列的任何列的名称table1
,而table2
由触发器保持不变,使用没有意义OLD
或者NEW
因此它是非法的。所以,准确地说:NEW
为…工作table1
列和不工作table2
柱。