gpt4 book ai didi

postgresql - 创建一个物化 View ,它继承进行 View 调用的用户的权限

转载 作者:行者123 更新时间:2023-11-29 12:51:11 24 4
gpt4 key购买 nike

我正在尝试在一个函数中创建一个物化 View ,该 View 需要获得从我的应用程序中进行 View 调用的用户的权限。我知道这可以在函数中完成,但是在我的函数中创建 View 时,有没有办法在 View 上执行此操作?

简而言之——我在一个函数中创建一个 View ;有没有办法在函数内授予对 View 的权限?

CREATE OR REPLACE FUNCTION schema.my_function()
RETURNS void AS $body$
DECLARE
view_name TEXT := '';
BEGIN
view_name := $vn$
CREATE MATERIALIZED VIEW schema.view_name_mv
(
"column1",
"column2",
"column3"
)
as
select
column1,
column2,
column3
from schema.table_name;
$vn$;
END;
$body$
LANGUAGE 'plpgsql' VOLATILE;

最佳答案

有两种方式:

  1. 在创建物化 View 后立即在函数中显式发出 GRANT 语句:

    GRANT SELECT ON "schema".view_name_mv TO appuser;
  2. 使用 ALTER DEFAULT PRIVILEGES 以便该架构中的任何 future 表、 View 和物化 View 都获得用户的权限:

    ALTER DEFAULT PRIVILEGES FOR ROLE creator IN SCHEMA "schema"
    GRANT SELECT ON TABLES TO appuser;

    这假定创建物化 View 的用户是 creator

关于postgresql - 创建一个物化 View ,它继承进行 View 调用的用户的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53637029/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com