如果不满足条件,则防止丢弃表

时间:2013-07-02 07:33:01

标签: postgresql drop-table

我想询问是否可以处理drop table命令并在不满足某些条件时将其中断?

1 个答案:

答案 0 :(得分:2)

我猜你想问:

  

如何根据某些应用程序定义的条件阻止DROP TABLE成功

如果是这样,您唯一的内置选项是使用权限。请参阅PostgreSQL手册中的GRANTREVOKE

如果您想要更复杂的东西,可以编写ProcessUtility_hook,但这需要您在C中编写一个编译并加载到服务器中的扩展。

编写ProcessUtility_hook实际上并不太难,但PostgreSQL 9.2和9.3定义之间存在差异,这意味着您需要单独的扩展。这是一个基本的例子:https://github.com/ringerc/scrapcode/tree/master/postgresql/example_processutility_hook这里是一个实际做一些有用的ProcessUtility钩子:https://github.com/ringerc/postgres/blob/bdr-reject-unsafe-commands/contrib/bdr/bdr_commandfilter.c

如果您没有C编程经验且有一段时间,ProcessUtility_hook不适合您。

另请参阅:How to prevent table from being dropped?