У меня есть функция триггера, которая вызывается несколькими таблицами при обновлении COLUMN A, так что COLUMN B можно обновить на основе значения из другой функции. (Сложнее объяснить, чем на самом деле). Функция триггера принимает значения col_a и col_b, поскольку они различны для разных таблиц.Как установить столбец составного типа с использованием динамического sql в процедуре триггера
IF needs_updated THEN
sql = format('($1).%2$s = dbo.foo(($1).%1$s); ', col_a, col_b);
EXECUTE sql USING NEW;
END IF;
Когда я пытаюсь запустить выше, формат производит этот SQL:
($1).NameText = dbo.foo(($1).Name);
Когда я выполнить SQL с ИСПОЛЬЗОВАНИЕМ я ожидал что-то подобное, чтобы это случилось (который работает при выполнении прямого без динамического SQL):
NEW.NameText = dbo.foo(NEW.Name);
Вместо этого я получаю:
[42601] ERROR: syntax error at or near "$1"
Как я могу динамически обновлять столбец записи/составного типа NEW?
Ildar, спасибо, что ответил. К сожалению, существует логика '' 'needs_updated''', которая будет повторяться для каждой таблицы (и указанных столбцов), и в этот момент я мог бы также создать отдельные триггерные функции для каждой таблицы. Я надеялся сократить повторяющуюся логику. – Airn5475