sql—如何查看可通过新plpgsql访问的属性

m3eecexj  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(301)

假设我有一个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 ?

n8ghc7c1

n8ghc7c11#

看这一行:

BEFORE INSERT ON table1

这告诉您触发器是在 INSERT ON table1 . 这意味着你将 NEW. 列的任何列的名称 table1 ,而 table2 由触发器保持不变,使用没有意义 OLD 或者 NEW 因此它是非法的。所以,准确地说: NEW 为…工作 table1 列和不工作 table2 柱。

相关问题