A funcção do link:
http://www.mail-archive.com/pgbr-geral@listas.postgresql.org.br/msg17154.html

CREATE OR REPLACE FUNCTION change_owner(oldOWNER TEXT, newOWNER TEXT)
RETURNS boolean AS $$
DECLARE
  comando TEXT;
  lista   RECORD;
BEGIN
  comando := 'ALTER SCHEMA ' || quote_ident(oldOWNER) || ' OWNER TO ' ||
quote_ident(newOWNER);
  EXECUTE comando;

  FOR lista IN
    SELECT pg_namespace.nspname,
           pg_class.relname,
           pg_class.relkind
      FROM pg_namespace
           JOIN pg_class ON pg_namespace.oid=pg_class.relnamespace
     WHERE pg_namespace.nspname=oldOWNER
       AND pg_class.relkind IN ('r','v','S')
  LOOP
    IF lista.relkind = 'S' AND CAST((SELECT COALESCE(setting,0) FROM
pg_settings WHERE name = 'server_version_num') AS INTEGER) >= 80400 THEN
      comando := 'ALTER SEQUENCE ' || quote_ident(lista.nspname) || '.' ||
quote_ident(lista.relname) || ' OWNER TO ' || quote_ident(newOWNER);
      RAISE NOTICE '%', comando;
    ELSE
      comando := 'ALTER TABLE ' || quote_ident(lista.nspname) || '.' ||
quote_ident(lista.relname) || ' OWNER TO ' || quote_ident(newOWNER);

      RAISE NOTICE '%', comando;
    END IF;
    EXECUTE comando;
  END LOOP;

  IF FOUND THEN
    RETURN TRUE;
  END IF;
  RETURN FALSE;
END;
$$
LANGUAGE 'plpgsql'
IMMUTABLE
RETURNS FALSE ON NULL INPUT;



2009/12/2 JotaComm <jota.c...@gmail.com>

> Olá,
>
>
>
> 2009/12/2 Jean Carlos Danese <j...@cetesc.com.br>
>
>
>> http://www.mail-archive.com/pgbr-geral@listas.postgresql.org.br/msg17154.html
>>
>> A função foi executada e não retornou nenhum erro, porem não mudou o dono
>> das tabelas, talvez seja algo que fiz de errado ou deixei de fazer.
>>
>
> Primeiro. Qual a função que você executou? Você pode postar aqui o código
> da função, sem isso fica dificil pois existem várias maneiras de fazer. Uma
> das causas pode ser que as tabelas estejam num esquema diferente do qual
> você especificou ou derrepente o usuário que você especificou não existe. O
> ideal é você postar aqui o código da função que você executou. Sem estas
> informações é dificil ajudar.
>
>>
>> Poderia descrever o procedimento para a execução da função?
>>
>> 2009/12/1 JotaComm <jota.c...@gmail.com>
>>
>> Olá, Jean
>>>
>>> 2009/12/1 Jean Carlos Danese <j...@cetesc.com.br>
>>>
>>> Outro dia vi um questionamento sobre como alterar o dono de todas as
>>>> tabelas do banco de dados vi as solução e achei interessante, mas na hora 
>>>> de
>>>> executar as coisas não derão muito certo, após algumas tentativas resolvi
>>>> tentar outra maneira de resolver, que ficou assim:
>>>>
>>>
>>> Como assim as coisas não deram muito certo na hora de executar? Poderia
>>> dar um exemplo do que deu errado?
>>>
>>>>
>>>> -- altera todas as tabelas com dono jean para dono postgres
>>>>
>>>> UPDATE pg_class SET relowner=(select oid from pg_roles where
>>>> rolname='postgres') WHERE relowner=(select oid from pg_roles where
>>>> rolname='jean');
>>>>
>>>
>>> Acredito essa não ser a solução mais adequada, principalmente por fazer
>>> uma alteração do catálogo e neste momento todo o cuidado é pouco.
>>>
>>>>
>>>> Essa solução me pareceu mais simples.
>>>> _______________________________________________
>>>> pgbr-geral mailing list
>>>> pgbr-geral@listas.postgresql.org.br
>>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>>
>>>>
>>>
>>> []s
>>> --
>>> JotaComm
>>> http://jotacomm.wordpress.com
>>>
>>> _______________________________________________
>>> pgbr-geral mailing list
>>> pgbr-geral@listas.postgresql.org.br
>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>
>>>
>>
>> _______________________________________________
>> pgbr-geral mailing list
>> pgbr-geral@listas.postgresql.org.br
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
>
> []s
> --
> JotaComm
> http://jotacomm.wordpress.com
>
> _______________________________________________
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a