我想在数据库中创建一个触发器,该触发器不允许操作员CREATE在夜间执行。
我尝试过'CREATE TRIGGER',但是在文档中没有CREATE运算符,只有INSERT和其他。
谢谢。
答案 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