我正在尝试调试一个实例,我尝试使用特殊角色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}}
答案 0 :(得分:2)
该功能已存在,并由不同的角色拥有。
只有所有者或超级用户才能DROP
和ALTER
个对象,如果该功能已存在,则同样适用于CREATE OR REPLACE FUNCTION
。