как увидеть свойства, доступные для доступа с НОВЫМ plpgsql - PullRequest
1 голос
/ 19 июня 2020

Допустим, у меня есть функция PLPG SQL

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;

  1. Я заметил, что только некоторые столбцы в table1 и table2 доступны с NEW.column_name. Как я могу увидеть полный список столбцов, к которым я могу получить доступ с помощью NEW?

  2. Кроме того, если в table1 или table2 есть столбец, к которому я не могу получить доступ с помощью NEW, как сделать его доступным для NEW?

1 Ответ

2 голосов
/ 19 июня 2020

Посмотрите на эту строку:

BEFORE INSERT ON table1

Это говорит о том, что триггер выполняется до INSERT ON table1. Это означает, что у вас будет NEW. column_name для любого столбца table1, тогда как table2 не изменяется триггером и не имеет смысла использовать OLD или NEW на нем, следовательно, это незаконно. Итак, чтобы быть точным: NEW работает для table1 столбцов и не работает для table2 столбцов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...