我有一个生产数据库,用户可以在其中创建一组继承主表 X 的表。问题是当我想为所有表应用自动授予时;
当然使用此命令:GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only;
这只会应用于已经创建的表。
目标是将命令应用于所有最新的表。
NB : I already tried to make a trigger on tables pg_class, pg_namespace but it's impossible and it's the same for the pg_tables view;
最佳答案
您可以使用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
/DROP
/ALTER
语句上触发。
关于sql - 授予对所有表/PostgreSQL 的自动选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30238330/