postgresql如何禁止在数据库执行drop table操作
Posted 瀚高PG实验室
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了postgresql如何禁止在数据库执行drop table操作相关的知识,希望对你有一定的参考价值。
作者:瀚高PG实验室 (Highgo PG Lab)- 徐云鹤
PG如何禁止在数据库执行drop table的操作?
创建触发器函数:
CREATE OR REPLACE FUNCTION DISABLE_DROP_TABLE()
RETURNS event_trigger
LANGUAGE plpgsql
AS $$
BEGIN
if tg_tag = 'DROP TABLE' THEN
RAISE EXCEPTION 'Command % is disabled.', tg_tag;
END if;
END;
$$;
创建事件触发器:
CREATE EVENT TRIGGER DISABLE_DROP_TABLE on ddl_command_start EXECUTE FUNCTION DISABLE_DROP_TABLE();
尝试执行drop table 命令报错:
postgres=# drop table aab;
ERROR: Command DROP TABLE is disabled.
CONTEXT: PL/pgSQL function disable_drop_table() line 4 at RAISE
其他操作也可通过类似方式进行限制。
更多的事件类型可查阅:
以上是关于postgresql如何禁止在数据库执行drop table操作的主要内容,如果未能解决你的问题,请参考以下文章
循环中的PostgreSQL DROP TABLE失败,出现ERROR:共享内存
如何在 PostgreSQL 的 DROP/CREATE/INSERT 语句中简洁地使用 SET 变量?
在 PostgreSQL 中进行 DROPping 时避免对引用表的独占访问锁
PostgreSQL:为啥 DROP DATABASE databaseName 在 psql 中保留已删除数据库的模式和关系?