У меня есть правило, которое выполняется при обновлении в исходную таблицу. Правило запрашивает данные в нескольких других таблицах, форматирует данные и вставляет их в другую таблицу преобразования. Вот пример того, что у меня до сих пор.Правило PG - использование NEW в подзапросе
CREATE OR REPLACE RULE
value_insert
AS ON UPDATE TO
source_table
DO ALSO INSERT INTO transform_table(
username
,status
,section
)
SELECT
username
,MAX(status)
,MAX(section)
FROM
(
SELECT
username
,CASE
WHEN item = status
THEN value
ELSE NULL
END AS status
,CASE
WHEN item = section
THEN value
ELSE NULL
END AS section
FROM
(
SELECT
username
,item
,value
FROM
table1
,table2
WHERE
item = status
OR item = section
AND source_table.username = NEW.username
)
)
GROUP BY
username
Я пытаюсь передать новое значение в подзапрос, но я получаю ошибку «ERROR: подзапрос в FROM не может ссылаться на другие отношения того же уровня запросов». Использование NEW в самом внешнем, где работает оператор, но запрос занимает много времени из-за большого объема данных в таблицах.
Возможно ли передать новое значение в подзапрос этого правила? Я использую PG 8.3 и PGAdmin 1.12