Как создать триггер в базе данных, который не позволяет операторам CREATE выполняться ночью? - PullRequest
0 голосов
/ 30 марта 2019

Я хочу создать триггер в базе данных, который не позволяет операторам CREATE выполняться ночью.

Я пробовал 'CREATE TRIGGER', но в документации нет оператора CREATE, толькоВСТАВИТЬ и др.

Заранее спасибо.

1 Ответ

1 голос
/ 30 марта 2019

Как уже упоминалось в комментариях, вам нужно EVENT TRIGGER.Функция триггера может ограничивать работу в зависимости от времени.Я дал вам только образец.При необходимости вы можете использовать правильное условие.

CREATE OR REPLACE FUNCTION pr_create_obj_func()
RETURNS event_trigger
LANGUAGE plpgsql
AS $$
BEGIN
if ( extract( hour from clock_timestamp() )  between 0 and 6 ) then
   raise EXCEPTION '% : This operation cannot be performed at night',tg_tag;
end if;
END;
$$;

Триггер события должен быть определен как

CREATE EVENT TRIGGER
  tg_no_night_create ON ddl_command_end
   WHEN  TAG in  ('CREATE TABLE')
EXECUTE PROCEDURE pr_create_obj_func();

Различные теги, которые могут быть указаны в предложении IN дляфактические события, для которых должен запускаться триггер, перечислены здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...