У меня есть триггерная функция, которая вызывается несколькими таблицами при обновлении COLUMN A, поэтому COLUMN B может быть обновлен на основе значения из другой функции. (Объяснить сложнее, чем есть на самом деле). Функция триггера принимает col_a и col_b, поскольку они разные для разных таблиц.
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 с USING, я ожидаю, что произойдет что-то подобное (что работает при выполнении прямо без динамического sql):
NEW.NameText = dbo.foo(NEW.Name);
Вместо этого я получаю:
[42601] ОШИБКА: синтаксическая ошибка на уровне или около "$1"
Как я могу динамически обновлять столбец в записи/составном типе NEW?