[firebase-br] Duvida Campos Firebird
Sandro Souza
escovadordebits em gmail.com
Sáb Out 10 05:09:31 -03 2009
Bom dia/tarde Alex.
Grande Alex, a grande maioria dos SGBDs (não sei se todos) possuem
tabelas de sistemas feitas com o propósito de podermos consultá-las para
conhecer a estrutura daquele determinado banco de dados.
Não vou detalhar tudo aqui no momento (seria muito extenso), mas vou
comparar o pouco que sei sobre o mySQL com o pouco que sei sobre o
Firebird para que sirva de luz (pelo menos é essa a intenção). :D
No caso do mySQL, se não me engano, existe um "schema" (esquema = base
de dados) chamado "INFORMATION_SCHEMA", onde você pode ler os dados
sobre todos os outros schemas, ou seja, existe uma base de dados
principal (INFORMATION_SCHEMA) que contém as informações sobre a
estrutura (DDL) de todas as bases de dados daquele servidor mySQL, como
a lista de bases de dados (tabela SCHEMATA, campo SCHEMA_NAME), a lista
de tabelas daquela base de dados (tabela TABLES, campos TABLE_SCHEMA e
TABLE_NAME), a lista dos campos/colunas de cada tabela (tabela COLUMNS,
campos TABLE_SCHEMA, TABLE_NAME e COLUMN_NAME) entre outras tabelas.
No caso do Firebird, não existe uma base de dados principal contendo
essas informações. Elas estão dentro de cada base de dados, contendo
apenas as informações sobre a estrutura daquela base de dados apenas.
Nesse ponto, o $$$ Oracle $$$ e o M$$$ SQL Server também se assemelham
ao Firebird.
Cada base de dados do Firebird possui tabelas especiais, chamadas de
"tabelas de sistema", que sempre iniciam com o prefixo "RDB$"
([R]elational [D]ata[B]ase = banco de dados relational), e da mesma
forma que no mySQL (e todos os outros SGBDs que tenham esse tipo de
informação) podemos ler essas tabelas e conhecer a estrutura daquela
base de dados.
Sendo assim, no caso do Firebird, assim que você se conecta a uma base
de dados, você pode obter as informações básicas sobre aquela base de
dados na tabela RDB$DATABASE.
A lista de tabelas e visões fica na tabela RDB$RELATIONS (o campo
RDB$RELATION_NAME contém o nome da tabela, o campo RDB$SYSTEM_FLAG é
sempre 1 se aquela tabela ou visão for de sistema e o campo RDB$VIEW_BLR
é sempre NULL se for realmente uma tabela), a lista de campos/colunas
fica na tabela RDB$RELATION_FIELDS (o campo RDB$RELATION_NAME contém o
nome da tabela, o campo RDB$FIELD_NAME contém o nome do campo/coluna, o
campo RDB$FIELD_POSITION contém a posição/ordem do campo dentro da sua
tabela (use no ORDER BY)) entre outras tabelas.
Claro que existem outras tabelas de sistema, mas aqui eu coloquei apenas
a "ponta do iceberg". Espero que lhe ajude na sua aventura. :D
Espero ter ajudado mais que atrapalhado. :D
Alex Miranda de Oliveira escreveu:
> Quero saber se no firebird existe algum jeito de saber
> se antes deu criar uma tabela ou um campo..
>
> se tem jeito eu checar se ela existe
> e so depois criar a tabela ou o campo...
>
> porque de checar se a tabela existe eu sei que no mysql existe
>
> conto com a ajuda de vcs...
> ______________________________________________
> 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
>
>
Mais detalhes sobre a lista de discussão lista