У меня есть триггер INSERT в PostgreSQL, который я пытаюсь связать вставленную строку с другой таблицей, а затем вставить результат в третью таблицу. Назовем исходную таблицу, что срабатывает триггер INSERT, «A»; в таблице курсор соединяется с A на «B»; и таблица запускает функцию триггера, затем вставляет в "C".Триггер PostgreSQL AFTER INSERT и ссылка на вставленную строку
Мое мышление было то, что функция ПОСЛЕ INSERT должна позволить мне передать значение из «NEW» строки в качестве параметра для того, чтобы ссылаться на его соответствующую строку в таблице А, как это:
myCursor CURSOR (insertedKey A.key%TYPE) FOR
SELECT *
FROM A
INNER JOIN B
ON A.key=B.key
WHERE A.key=insertedKey;
...
OPEN myCursor (NEW.key);
FETCH NEXT FROM myCursor INTO row_C;
INSERT INTO C VALUES (row_C.*);
Этот дает мне пустой курсор. Если я запускаю триггер ПОСЛЕ ОБНОВЛЕНИЯ, он работает, но со старой строкой от A. Это заставляет меня думать, что PostgreSQL не думает, что ПОСЛЕ INSERT/UPDATE означает то, что, на мой взгляд, означает.
Возможно, я просто делаю что-то неправильно? Есть ли способ сделать то, что я пытаюсь сделать?
Я не думал об этом. Мне также кажется, что я передаю всю новую строку в качестве параметра курсора. –