授予自动选择所有表/ PostgreSQL

时间:2015-05-14 13:13:58

标签: sql postgresql postgresql-9.2

我有一个生产数据库,用户可以在其中创建一组继承主表X的表。问题是我想为所有表应用自动授权;

当然使用此命令:GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only ;这只会应用于已创建的表。

目标是将命令应用于所有最新的表。

  

注意:我已经尝试在表pg_class上触发,   pg_namespace但它是不可能的,对于pg_tables来说也是一样的   视图;

1 个答案:

答案 0 :(得分:2)

您可以使用ALTER DEFAULT PRIVILEGES命令为新创建的对象设置默认授权,例如:

ALTER DEFAULT PRIVILEGES
FOR USER creator_role IN SCHEMA public
GRANT SELECT ON TABLES TO read_only;

顺便说一句,虽然您无法在系统目录上安装触发器,但您可以使用event triggers实现相同的功能(在Postgres 9.3+中),这会触发任何CREATE / {{ 1}} / DROP声明。