在Postgres中创建函数时必须是函数的所有者

时间:2018-01-10 10:41:29

标签: sql postgresql

我正在尝试调试一个实例,我尝试使用特殊角色SET ROLE to "myrole"; CREATE OR REPLACE FUNCTION refresh_view(schema_name text, table_name text) RETURNS void SECURITY DEFINER AS $$ DECLARE sql text; BEGIN sql := 'REFRESH MATERIALIZED VIEW ' || quote_ident(schema_name) || '.' || quote_ident(table_name) || ' with data'; EXECUTE sql; RETURN; END; $$ LANGUAGE plpgsql; 创建一个函数,但操作失败并带有

  

错误:必须是函数refresh_view的所有者

可以成功创建其他功能 - 它只是失败的单个功能。

{{1}}

1 个答案:

答案 0 :(得分:2)

该功能已存在,并由不同的角色拥有。

只有所有者或超级用户才能DROPALTER个对象,如果该功能已存在,则同样适用于CREATE OR REPLACE FUNCTION