[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