Trigger

Есть таблица invest_proektu, которая содержит названия проектов, областьи приминения, объем инвестиций,срок возврата инвестиций, срок реализации инвестиций. А также создана таблица pobeditely, в которую были помещены инвестиционные проекты по конкретной области приминения с миним. показателем: объем инвестиций/срок возврата инвестиций.
Нужно создать триггер, который при внесении изменений или добавлении новой записи в invest_proektu изменит содержимое pobeditely(т.е. пересчитает новый показатель)
Вот что я пыталась сделать:
CREATE FUNCTION Insert_Inv () RETURNS trigger AS $$
BEGIN
delete from Pobeditely;
insert into Pobeditely
(select new.oblast_ispolzovaniya,min(new.obem_investicij__tus_eur/new.srok_vozvrata_investicij_god) from invest_proektu
group by new.oblast_ispolzovaniya);
RETURN new;
END;$$
LANGUAGE 'plpgsql';

CREATE TRIGGER Insert_Inv after insert
ON invest_proektu
FOR EACH ROW
EXECUTE PROCEDURE Insert_Inv();

Но оно всего лишь добавляет новую запись в пустую таблицу Pobeditely, а как сделать с UPDATE???
типа:
CREATE FUNCTION Insert_Inv () RETURNS trigger AS $$
BEGIN
UPDATE Pobeditely set (select new.oblast_ispolzovaniya,min(new.obem_investicij__tus_eur/new.srok_vozvrata_investicij_god) from invest_proektu
group by new.oblast_ispolzovaniya);
RETURN new;
END;$$
LANGUAGE 'plpgsql';

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Так а в чём проблема? Почему

Так а в чём проблема? Почему не получается с UPDATE? Что выдаёт? Какие ошибки/проблемы?

Ошибка в том, что я хочу

Ошибка в том, что я хочу изменить поле Показатель, но не получается:
UPDATE Pobeditely set Pokazatel in (select new.oblast_ispolzovaniya,min(new.obem_investicij__tus_eur/new.srok_vozvrata_investicij_god) from invest_proektu
group by new.oblast_ispolzovaniya);

Так не работает. Пишет что ошибка около "in"
ERROR: syntax error at or near "in"
Почему здесь нельзя использовать "in"? И как можно по-другому сделать?

Понятно. Ошибка у вас в

Понятно. Ошибка у вас в запросе, при чём здесь триггер?
Читайте синтаксис UPDATE, благо уже на русском есть:
http://postgresql.ru.net/manual/dml-update.html
Насколько я вижу у вас перед IN должно быть как минимум WHERE, а SET должно заверщаться присваиванием.

OK! Спасибо!

OK! Спасибо!

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023