powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите с запросом
3 сообщений из 3, страница 1 из 1
Помогите с запросом
    #40077723
PCContra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочу написать такой запрос:
Create trigger on INSERT, UPDATE, DELETE on any table in scheme "LOG" execute INSERT INTO TABLE MAIN( tablename, userid) Values ('$tablename_from_scheme_log', 1)
...
Рейтинг: 0 / 0
Помогите с запросом
    #40077725
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TG_TABLE_NAME для выяснения откуда вызван триггер.
on any table не существует.
...
Рейтинг: 0 / 0
Помогите с запросом
    #40078162
PCContra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел то, что нужно:
авторБлагодаря существованию события table_rewrite, можно реализовать политику перезаписи таблиц, допускающую перезапись только в определённое время обслуживания.

Следующий пример демонстрирует реализацию такой политики.

CREATE OR REPLACE FUNCTION no_rewrite()
RETURNS event_trigger
LANGUAGE plpgsql AS
$$
---
--- Реализация локальной политики перезаписи таблиц:
--- перезапись public.foo не допускается,
--- другие таблицы могут перезаписываться между 1 часом ночи и 6 часами утра,
--- если только их размер не превышает 100 блоков
---
DECLARE
table_oid oid := pg_event_trigger_table_rewrite_oid();
current_hour integer := extract('hour' from current_time);
pages integer;
max_pages integer := 100;
BEGIN
IF pg_event_trigger_table_rewrite_oid() = 'public.foo'::regclass
THEN
RAISE EXCEPTION 'you''re not allowed to rewrite the table %',
table_oid::regclass;
END IF;

SELECT INTO pages relpages FROM pg_class WHERE oid = table_oid;
IF pages > max_pages
THEN
RAISE EXCEPTION 'rewrites only allowed for table with less than % pages',
max_pages;
END IF;

IF current_hour NOT BETWEEN 1 AND 6
THEN
RAISE EXCEPTION 'rewrites only allowed between 1am and 6am';
END IF;
END;
$$;

CREATE EVENT TRIGGER no_rewrite_allowed
ON table_rewrite
EXECUTE PROCEDURE no_rewrite();
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите с запросом
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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