[firebase-br] Extraindo metadata

jesus filho tec.jesustec em gmail.com
Ter Jan 29 11:27:32 -03 2008


Amigo , veja se esta lista de selects poderá te ajudar

---------------------------------------------------------------------------------------------------------------------------------------


Para obter os índices secundários (excluindo as foreign keys) de uma
determinada tabela:

select a.rdb$index_name
from rdb$indices a
left join rdb$relation_constraints b on
b.rdb$index_name = a.rdb$index_name
where
a.rdb$relation_name = 'NOME_DA_TABELA'
and a.rdb$foreign_key is null
and b.rdb$constraint_type is null



Para obter os índices de uma determinada tabela:

select *
from rdb$indices
where rdb$relation_name = 'NOME_DA_TABELA'

Para obter as chaves primárias:

select a.rdb$index_name as indice,
a.rdb$relation_name as Tabela,
b.rdb$field_name as Campo, b.rdb$field_position as Posicao
from rdb$relation_constraints a,
rdb$index_segments b
where a.rdb$constraint_type = 'PRIMARY KEY'
and b.rdb$index_name = a.rdb$index_name
order by a.rdb$index_name, b.rdb$field_position



Para obter os campos da chave primaria de uma determinada tabela:

select a.rdb$index_name as indice,
a.rdb$relation_name as Tabela,
b.rdb$field_name as Campo, b.rdb$field_position as Posicao
from rdb$relation_constraints a,
rdb$index_segments b
where a.rdb$relation_name = 'NOME_DA_TABELA'
and a.rdb$constraint_type = 'PRIMARY KEY'
and b.rdb$index_name = a.rdb$index_name
order by a.rdb$index_name, b.rdb$field_position



Para obter os nomes das tabelas por ordem de dependência da chave primária:

select rdb$constraint_name, rdb$relation_name
from rdb$relation_constraints
where rdb$constraint_type = 'PRIMARY KEY'



Para obter as tabelas principais e tabelas dependentes:

select a.rdb$relation_name as tabprincipal,
c.rdb$relation_name as tabdependente, count(c.rdb$relation_name) as
qtddependencias
from rdb$relation_constraints a,
rdb$ref_constraints b,
rdb$relation_constraints c
where a.rdb$constraint_type = 'PRIMARY KEY'
and b.rdb$const_name_uq = a.rdb$constraint_name
and c.rdb$constraint_name = b.rdb$constraint_name
group by a.rdb$relation_name, c.rdb$relation_name
order by 1

---------------------------------------------------------------------------------------------------------------------------------------





Em 29/01/08, Alex Ricardo Parolin <arparolin em gmail.com> escreveu:
>
> Gostaria de saber se existe um comando no Firebird que eu possa listar os
> campos e os indices de uma tabela, de modo que ele me mostre a DDL ou algo
> parecido.
>
> Exemplo:
>
> TABELA A
> Campo1 VARCHAR(10) NOT NULL
> Campo2 INTEGER
> Idx_Exemplo (Campo1)
>
> Eu digitaria esse comando e ele traria algo como
>
> COLUNA     TIPO                  NULL
> Campo1       VARCHAR(10)      N
> Campo2       INTEGER             N
>
>
> Alguem pode me apontar algo?
> ______________________________________________
> 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: Jésus Jerônimo



Mais detalhes sobre a lista de discussão lista