如何在数据库中创建一个不允许运算符CREATE在晚上执行的触发器?

问题描述 投票:-1回答:1

我想在数据库中创建一个触发器,它不允许运算符CREATE在晚上执行。

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

提前致谢。

sql database postgresql
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.