[firebase-br] Criar campo chave para diversas tabelas em um único comando

Robson Zambroti rlzambroti em gmail.com
Ter Jun 5 12:30:27 -03 2012


Eduardo,
Tente assim (obs. testado no FB2.5):

EXECUTE BLOCK
AS
DECLARE VARIABLE SQL VARCHAR(1500);
BEGIN
  FOR
      SELECT DISTINCT
             'ALTER TABLE '||
             TRIM(RDB$RELATION_FIELDS.RDB$RELATION_NAME)||
             ' ADD CONSTRAINT PK_'||
             TRIM(RDB$RELATION_FIELDS.RDB$RELATION_NAME)||
             ' PRIMARY KEY
('||TRIM(RDB$RELATION_FIELDS.RDB$FIELD_NAME)||');'
        FROM RDB$RELATION_FIELDS
       WHERE RDB$RELATION_FIELDS.RDB$FIELD_NAME = 'ITEM'
         AND RDB$RELATION_FIELDS.RDB$VIEW_CONTEXT IS NULL
         AND NOT EXISTS ( SELECT NULL
                            FROM RDB$RELATION_CONSTRAINTS,
RDB$INDEX_SEGMENTS
                           WHERE
RDB$RELATION_CONSTRAINTS.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY'
                             AND RDB$INDEX_SEGMENTS.RDB$FIELD_NAME =
RDB$RELATION_FIELDS.RDB$FIELD_NAME
                             AND RDB$RELATION_CONSTRAINTS.RDB$RELATION_NAME
= RDB$RELATION_FIELDS.RDB$RELATION_NAME
                             AND RDB$RELATION_CONSTRAINTS.RDB$INDEX_NAME =
RDB$INDEX_SEGMENTS.RDB$INDEX_NAME  )
        INTO :SQL
  DO
  BEGIN
    EXECUTE STATEMENT SQL;
  END
END

Att
Robson Zambroti

Em 5 de junho de 2012 12:10, Eduardo Belo <beloelogica em gmail.com> escreveu:

> Prezados,
>
>
> Tem como criar um script  único afim de criar uma chave primaria para todas
> as tabelas de uma vez só? Todas as tabelas em comum tem o campo chave
> "ITEM". A questão é que são 5 bases e todas em média tem cerca de 100
> tabelas, pela lógica teria que fazer isso manualmente uma a uma, tipo:
> ALTER TABLE CLIENTE ADD CONSTRAINT PK_CLIENTE PRIMARY KEY (ITEM).
>
> Tem como fazer isso de uam vez só afim de facilitar a manutenção?
>
>
> A mesma pergunta faço para alterar de uma vez só um determinado tipo de
> campo de todas as tabelas, exemplo: alterar todas as tabelas que tem o
> campo tipo DOUBLE PRECISION para NUMERIC(15,2) ?
>
>
>
> Agradeço antecipadamente a todos que ajudarem.
>
>
>
> Eduardo Belo
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



-- 
Att.
Robson Zambroti



Mais detalhes sobre a lista de discussão lista