Sag*_*gar 9 postgresql refresh view
我正在通过运行脚本在 linux 上执行 sql 文件。
我可以看到我的查询执行得很好,但我有以下查询来刷新我的 testData.sql 文件中的视图,这给了我错误
refresh MATERIALIZED VIEW view_test
Run Code Online (Sandbox Code Playgroud)
错误
psql:/home/test/sql/testData.sql:111: ERROR: must be owner of relation view_test
Run Code Online (Sandbox Code Playgroud)
我已申请以下权限
grant select,update,delete,insert on view_test to "user123";
Run Code Online (Sandbox Code Playgroud)
如何向POSTGRESQL 中的视图授予刷新权限?
您应该创建一个新角色来拥有该视图,然后将该角色授予需要刷新视图权限的任何用户。这可确保您在需要创建其他用户凭据时可以轻松分配权限。
CREATE ROLE refresh_materialized_views;
GRANT SELECT, INSERT, UPDATE, DELETE ON view_test TO refresh_materialized_views;
GRANT refresh_materialized_views TO user123;
GRANT refresh_materialized_views TO current_owner_of_view_test;
ALTER TABLE view_test OWNER TO refresh_materialized_views;
Run Code Online (Sandbox Code Playgroud)
一个诱人的答案是将视图的所有者更改为 user123,但这很危险 - 您会破坏当前所有者对其视图的访问权限。
错误PostgreSQL要求我们必须是所有者才能刷新view_test。您可以使用alter table view_test owner to 'user123'命令将此物化视图的所有者更改为user123
| 归档时间: |
|
| 查看次数: |
4861 次 |
| 最近记录: |