在退出DB和现有架构时,我创建了一个新函数。我应该创建一个新角色,以便可以执行我创建的新函数。
BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
DO $BODY$
BEGIN
CREATE ROLE new_role LOGIN;
EXCEPTION
WHEN duplicate_object THEN
RAISE DEBUG '% (%)', SQLERRM, SQLSTATE;
END;
$BODY$;
ALTER ROLE new_role ENCRYPTED PASSWORD 'abc123';
COMMIT;
GRANT CONNECT ON DATABASE "existing_db" TO new_role;
GRANT ALL PRIVILEGES ON SCHEMA public TO new_role;
grant all ON FUNCTION new_fun(name text, address text) TO new_role
使用new_role连接到数据库,并尝试从new_fun中选择提示我“模式公共权限被拒绝”。
我不确定我是否需要在这里给予其他资助许可。请帮忙。
谢谢, -div
答案 0 :(得分:0)
postgresql 9.1 - access tables through functions
我不知道必须公开撤销公众的所有内容:从上面链接开始的步骤。
全部撤消SCHEMA public FROM public;
现在明白了。由于