我想询问是否可以处理drop table命令并在不满足某些条件时将其中断?
答案 0 :(得分:2)
我猜你想问:
如何根据某些应用程序定义的条件阻止
DROP TABLE
成功
如果是这样,您唯一的内置选项是使用权限。请参阅PostgreSQL手册中的GRANT
和REVOKE
。
如果您想要更复杂的东西,可以编写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
不适合您。