我想在数据库中创建一个触发器,它不允许运算符CREATE在晚上执行。
我试过'CREATE TRIGGER',但是在文档中没有CREATE运算符,只有INSERT和其他运算符。
提前致谢。
正如评论中提到的,你需要一个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