суббота, 22 декабря 2018 г.

PostgreSQL: пример исполняемого блока кода с динамически формирующимся содержимым и уведомлениями

create or replace function refresh_jenki_postgres_schemalist() returns void AS $$
declare
slct RECORD;
i integer;
i2 integer;
begin
/* Удаляет из таблицы «azk» для «jenki» записи об отсутствующих базах */
delete from azk a where not exists (select null from pg_database d where d.datname = a.dbname);
GET DIAGNOSTICS i = ROW_COUNT;
RAISE NOTICE 'Deleted rows: %', i;
/* Вставляем записи о базах, которые есть на сервере, но которых нет в таблице «azk» для «jenki» (за исключением баз, которые не относятся к АЦК) */
i = 0;
for slct in select 'insert into azk(id,dbname) values(nextval(''azk_seq''),'''||d.datname||''')' as stmt from pg_database d where not exists (select null from azk a where d.datname = a.dbname) and d.datname not in ('postgres','template0','template1','zabbix') order by d.datname loop
execute slct.stmt;
i = i + 1;
end loop;
RAISE NOTICE 'Inserted rows: %', i;
end $$ language plpgsql;

Комментариев нет:

Архив