【发布时间】:2018-01-12 18:51:27
【问题描述】:
我了解如何使用GRANT 来控制谁可以对数据库对象执行什么操作。
我有一个案例,如果有特定的函数可以修改表的内容,同时阻止用户直接访问表,这会很有用。
假设我有一个库存控制表,我想要一个函数increase_stock(int),它只修改一列。还会有其他函数可以修改其他列。
我的实际表有 ltrees 数组和 int 数组,这使得触发器成为一个不受欢迎的选项,因为它不能提供一种直接操作一个字段而不测试每个字段的更改的干净方法。更重要的是,它没有创建我想要的 API。
无论采用何种方法,我是否可以创建一个用户可见的函数,而该函数访问该用户不可见的表?
我正在使用 PG 10。
【问题讨论】:
-
是 - 如果您使用功能作为安全定义
-
非常感谢!请作为答案发布,以便我接受。
-
不用担心,做到了
标签: postgresql permissions database-schema plpgsql database-permissions