Olá,

2009/11/26 VisualP Sistemas <pa...@visualpsistemas.com.br>

>  Ola Pessoal,
>
> Preciso incluir uma nova coluna em todas as tabelas
> de um sistema e gostaria de saber se alguem conhece
> alguma forma de incluir automaticamente esta nova coluna
> de forma automatica.
>
> Algo do tipo:
> ALTER TABLE todas_tabelas ADD COLUMN novo_campo char(1);
>
> Alguem tem alguma dica ou script ???
>

Você pode fazer o seguinte:

CREATE OR REPLACE FUNCTION f_adiciona_coluna()
RETURNS boolean AS $$
DECLARE
    lista RECORD;
BEGIN
    FOR lista IN SELECT tablename FROM pg_tables WHERE
schemaname='public'     ORDER BY tablename LOOP
        EXECUTE 'ALTER TABLE ' || lista.tablename || ' ADD COLUMN codigo
INTEGER';
        RAISE NOTICE 'Coluna adicionada na tabela %.',lista.tablename;
    END LOOP;
    IF FOUND THEN
        RETURN TRUE;
    END IF;
RETURN FALSE;
END;
$$ LANGUAGE PLPGSQL;

Neste exemplo é adicionada a coluna codigo do tipo integer em todas as
tabelas do esquema public. É uma função bem simples, agora é só você adaptar
para o seu caso.

>
>
> Obrigado.
>
> Paulo.
>
>
>
> _______________________________________________
> 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

Responder a