On Tue, Apr 17, 2012 at 12:13 PM, Pedro Costa <[email protected]>wrote:

>  Obrigado Fábio.
> Já desconfiava.....
>
> Abraço
>
>
>
>
>
> Em 17-04-2012 13:23, Fabiano Abreu escreveu:
>
> *Olá Pedro.*
> *
> *
> *Creio que isto não seja possível, observando a documentação do
> PostgreSQL tal condição não é prevista, imagino que em nenhum banco de
> dados.*
> *
> *
> *Mas com isto, não posso afirmar que não é possível, talvez seja, de uma
> forma desconhecida.*
> *
> *
> http://www.postgresql.org/docs/8.1/static/sql-altertable.html
> *
> *Atenciosamente
> _ _
> *Fabiano Abreu*
> *Papo Sql <http://paposql.blogspot.com> - Um blog com tutoriais, dicas e
> truques sobre Sql
> *
>
>
> 2012/4/17 Pedro Costa <[email protected]>
>
>> Pessoal,
>>
>> É possível usar o case com um alter table?
>>
>> Tipo assim:
>>
>> alter table rua
>>
>> case n_rua exists (SELECT attname FROM pg_attribute WHERE attrelid =
>> (SELECT oid FROM pg_class WHERE relname = 'ruas') AND attname = 'n_rua')
>>
>> then add column largura double precision,add column tipologia text,add
>> column declive double precision
>>
>> else alter table ruas add column n_rua integer,
>>
>>
>>
>> Obrigado
>>
>>
>> _______________________________________________
>> pgbr-geral mailing list
>> [email protected]
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>
>
>
> _______________________________________________
> pgbr-geral mailing 
> [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
>
>
Você pode fazer isso dentro de uma stored procedure, mais ou menos assim:

create or replace procedure insere_campo()
returns void
language plpgsql
as $$
begin
     if exists (SELECT attname FROM pg_attribute WHERE attrelid = (SELECT
oid FROM pg_class WHERE relname = 'ruas') AND attname = 'n_rua') then
          alter table rua
          add column largura double precision,
          add column tipologia text,
          add column declive double precision;
     else
          alter table ruas add column n_rua integer;
     end if;
end;
$$;

Ou até num bloco anônimo:

do language plpgsql $$
-- mesmo código acima...
$$;

Atenciosamente,
--
Matheus de Oliveira

Bacharelado em Ciências de Computação
Laboratório de Computação de Alto Desempenho -
LCAD<http://www.lcad.icmc.usp.br/>
Instituto de Ciências Matemáticas e de Computação -
ICMC<http://www.icmc.usp.br/>
Universidade de São Paulo - USP <http://www.sc.usp.br/>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a