【发布时间】:2013-07-02 07:33:01
【问题描述】:
请问是否可以处理drop table命令,如果某些条件不满足就中断它?
【问题讨论】:
-
如果您以后需要帮助,请尝试写一个更详细的问题。你让读者猜测得越多,他们就越有可能浪费时间和你的回答与你认为你问的问题不同的东西。另外,您已经尝试过、研究过什么等?最后,在所有问题中始终包含您的确切 PostgreSQL 版本。
标签: postgresql drop-table
请问是否可以处理drop table命令,如果某些条件不满足就中断它?
【问题讨论】:
标签: postgresql drop-table
我猜你想问的是:
如何根据某些应用程序定义的条件防止
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 不适合您。
【讨论】: