Mateus wrote: > Criei uma função no PostgreSql qdo tento executar com outro usuario > aparece a seguinte menssagem: > > ERROR: must be owner of relation atualiza > SQL state: 42501 > Context: SQL function "atualiza" statement 1 > Sim, se um usuário A cria uma relação T e um usuário B tenta acessá-la, o último não terá permissão (a não ser que B seja superusuário). Durante a execução da função ocorre a mesma coisa; a função C é executada com permissão do usuário que a está executando, ou seja, B, mas ele não tem permissão na tabela T que foi criada por A! O que você pode fazer é utilizar o SECURITY DEFINER [1]. Ele funciona como o comando 'sudo'. Tenha cuidado ao utilizar esse parâmetro, pois você pode estar "dando" acesso inderetamente (via função) a usuários que não tem tal permissão. O que eu te aconselho é pensar em definir uma ROLE [2] que acessam um conjunto X de objetos. Neste caso, podemos gerenciar mais facilmente quem tem ou não tem mais acesso aquele conjunto específico de permissões.
> Ja dei permissão para executar a função o que deve ser ? > Além de permitir a execução da função, no corpo da função você tem objetos que também tem permissões a serem checadas (este é o seu problema). [1] http://www.postgresql.org/docs/8.2/static/sql-createfunction.html [2] http://www.postgresql.org/docs/8.2/static/user-manag.html -- Euler Taveira de Oliveira http://www.timbira.com/ _______________________________________________ Grupo de Usuários do PostgreSQL no Brasil Antes de perguntar consulte o manual http://pgdocptbr.sourceforge.net/ Para editar suas opções ou sair da lista acesse a página da lista em: http://pgfoundry.org/mailman/listinfo/brasil-usuarios
