如何在数据库中创建不允许操作员CREATE在夜间执行的触发器?

时间:2019-03-30 15:56:34

标签: sql database postgresql

我想在数据库中创建一个触发器,该触发器不允许操作员CREATE在夜间执行。

我尝试过'CREATE TRIGGER',但是在文档中没有CREATE运算符,只有INSERT和其他。

谢谢。

1 个答案:

答案 0 :(得分:1)

如评论中所述,您需要一个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子句中可以为触发事件触发的实际事件指定的各种标记为here