我的PostgreSQL 9.5数据库中有一个名为editor_users
的用户组。我的产品表已授予select, insert, update and delete
editor_user
个成员。
但我想阻止我的id专栏。没有人可能不会更新id列。如何撤消用户的更新权限?
答案 0 :(得分:1)
您可以为每列提供权限。假设你有一个如下表:
\x48\x31
您可以像这样向CREATE TABLE product (
id serial primary key,
mytext text
);
授予权限:
editor_user
答案 1 :(得分:1)
这里有两种选择。第一种是撤销表并授予列。如果您这样做,那么值得使用Indoemation schema
或系统目录来发现所有相关列并以编程方式创建授权语句。如果你走这条路线array_agg
而array_to_string
是你的朋友。
revoke all on table product from public, ...;
select 'grant insert(' || array_to_string(array_agg(attname), ', ') || ') to ... ;'
from pg_attribute
where attrelid = 'product'::regclass and attnum > 0;
然后将输出复制并粘贴到psql窗口中。