powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Создать хранимую процедуру для SELECT INTO
5 сообщений из 5, страница 1 из 1
Создать хранимую процедуру для SELECT INTO
    #33643336
mxlPostgres
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите написать хранимку,которая бы агрегировала данные и писала их в специальную таблицу. Есть таблицы
iptables с полями:
bytes
dest_ip
source_ip
date_prev(предыдущий ЧАС)
date_next(последующий ЧАС
и iptables_agr
bytes
dest_ip
source_ip
date_prev(предыдущий ДЕНЬ)
date_next(последующий ДЕНЬ).
Нужно из таблица iptables в определенное время писать агрегированные по дням данные в iptables_agr.
...
Рейтинг: 0 / 0
Создать хранимую процедуру для SELECT INTO
    #33643456
wbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
create trigger after insert ...
бла бла бла

if( NEW.date_next == определенное время ) then

insert into iptables_agr (fields) select ip_from,ip_to,sum(),sum() form iptables.... бла бла бла group by ip_from,ip_to ;

end if;

return new;

бла бла бла;
...
Рейтинг: 0 / 0
Создать хранимую процедуру для SELECT INTO
    #33643481
wbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а ну group by date_next,ip_from,ip_to
вобщем в зависимости что и как агрегировать надо..

ну можно еще что то типа where not exists (select 1 from iptables_agr where date_next=iptables.date_next) добавить чтоб уже агрегированные до этого на вставлять по новой.
...
Рейтинг: 0 / 0
Создать хранимую процедуру для SELECT INTO
    #33643579
mxlPostgres
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо.Но некоторые моменты не понятны (я еще только начинаю писать триггеры и функции).Для чего нужна строчка if( NEW.date_next == определенное время ) thenif( NEW.date_next == определенное время ) then и какое время подставлять,что значит NEW?
Инсерты в iptables делаются каждый час по 2000 в одной транзакции и в условие триггера нужно ставить этот инсерт или можно как-то указать конец транзакции?
...
Рейтинг: 0 / 0
Создать хранимую процедуру для SELECT INTO
    #33644321
wbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по поводу NEW - четсно говоря в падлу мне переводить тут постгревые доки по тригерам... темболее что ты уже начал сам про это читать(там все доходчиво написано)

if(...) типа проверка что вставилась запись с "определеным временем" (в твоей первнчлнй.формулировке) т.е. могу редположить что если вставилась такая запись то это "определенное время" наступило и можно пихать агрегированые записи туда ...куда а задаче написано. :)


можно сделать тригер FOR EACH ROWS ипределять момент пополнения агрегации там,а можно просто выполнить запроc в конце твоей транзакции:

insert into iptables_agr (bytes,dest_ip,source_ip,date_prev,date_next)
select sum(bytes),dest_ip,source_ip,date_prev,date_next from iptables as x
where
not exists
(
select 1 from iptables_agr where date_prev=x.date_prev and date_next=x.date_next and ip=x.ip
)
group by dest_ip,source_ip,date_prev,date_next
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Создать хранимую процедуру для SELECT INTO
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]