A funcção do link:
http://www.mail-archive.com/[email protected]/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 <[email protected]>
> Olá,
>
>
>
> 2009/12/2 Jean Carlos Danese <[email protected]>
>
>
>> http://www.mail-archive.com/[email protected]/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 <[email protected]>
>>
>> Olá, Jean
>>>
>>> 2009/12/1 Jean Carlos Danese <[email protected]>
>>>
>>> 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
>>>> [email protected]
>>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>>
>>>>
>>>
>>> []s
>>> --
>>> JotaComm
>>> http://jotacomm.wordpress.com
>>>
>>> _______________________________________________
>>> pgbr-geral mailing list
>>> [email protected]
>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>
>>>
>>
>> _______________________________________________
>> pgbr-geral mailing list
>> [email protected]
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
>
> []s
> --
> JotaComm
> http://jotacomm.wordpress.com
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral