我可以阻止 DROP COLUMN 在 PostgreSQL 9 或 10 或更高版本中的特定表上成功吗?
我的应用程序对列永远存在而不是消失做出了一些假设。我怕后来的程序员忘记了这个约束。
我知道触发器可以触发以控制行的插入、修改和删除。但是DDL呢?我可以防止对表结构进行某些更改吗?
安全性可能是一种方式,为用户和角色分配权限。但是这些未来的程序员将被允许添加列,只是禁止删除列。
我不担心恶意活动。我正在防御那些可能行动太快而忘记大局的急切海狸。
我可以阻止 DROP COLUMN 在 PostgreSQL 9 或 10 或更高版本中的特定表上成功吗?
我的应用程序对列永远存在而不是消失做出了一些假设。我怕后来的程序员忘记了这个约束。
我知道触发器可以触发以控制行的插入、修改和删除。但是DDL呢?我可以防止对表结构进行某些更改吗?
安全性可能是一种方式,为用户和角色分配权限。但是这些未来的程序员将被允许添加列,只是禁止删除列。
我不担心恶意活动。我正在防御那些可能行动太快而忘记大局的急切海狸。
事件触发器
有事件触发器来控制 DDL,为事件捕获
sql_drop
。打电话
CREATE EVENT TRIGGER
。在触发器函数中,检查要删除的对象是否是您的重要列之一。如果是这样,则引发异常以回滚事务。例子:
更多文档:
事件
函数