[firebase-br] ver se transação já foi executada anteriormente
Escovador de Bits
escovadordebits em gmail.com
Sex Jan 23 11:31:44 -03 2009
Bom dia/tarde Cássio.
Amigo, você deve consultar as tabelas de sistema do Firebird, ou seja,
as tabelas que iniciam com "RDB$", como a RDB$RELATIONS, etc...
Pode pesquisar na internet que existe muito material sobre o assunto,
mas vamos aos 3 casos que você informou aqui e mais alguns.
1 - Para saber se uma determinada tabela já está criada, execute o
seguinte SELECT:
SELECT COUNT(*) FROM RDB$RELATIONS WHERE RDB$RELATION_NAME =
'Nome-da-tabela'
Se retornar 0, ainda não foi criada, caso contrário (1), ela já está criada.
2 - Para saber se um determinado campo já foi criado em uma tabela,
execute o seguinte SELECT:
SELECT COUNT(*) FROM RDB$RELATION_FIELDS WHERE(RDB$RELATION_NAME =
'Nome-da-tabela')AND(RDB$FIELD_NAME = 'Nome-do-campo')
O resultado deve ser interpretado como no item anterior (0 = Ainda não
foi criado, 1 = Já foi criado).
3 - Para saber se uma determinada regra (constraint) já foi criada,
execute o seguinte SELECT:
SELECT COUNT(*) FROM RBD$RELATION_CONSTRAINTS WHERE(RDB$RELATION_NAME =
'Nome-da-tabela')AND(RDB$CONSTRAINT_NAME = 'Nome-da-regra')
O resultado deve ser interpretado como no item anterior (0 = Ainda não
foi criado, 1 = Já foi criado).
4 - No seu caso de verificar se um campo foi renomeado, bastará
verificar se existe um campo, na mesma tabela, com o novo nome, o que
significará que o campo já teria sido renomeado, usando a consulta do
item 2.
Cada banco de dados contém tabelas de sistemas justamente para que
possamos, via programação, acessar e verificar todos os objetos de banco
(tabelas, campos, stored procedures, triggers, etc...), e no caso do
Firebird não seria diferente.
O que coloquei aqui foi só a ponta do iceberg, e tem muito material
sobre essas tabelas de sistema do Firebird na internet.
Espero ter te ajudado mais que atrapalhado.
Cássio escreveu:
> --adiciona um campo
> ALTER TABLE Minha_tab
> ADD Novo_Campo VARCHAR(100);
>
> --delete um relacionamento
> ALTER TABLE Minha_tab
> DROP CONSTRAINT FK_ID_REL;
>
> --ALTERA NOME DA COLUNA
> ALTER TABLE minha_Tab
> ALTER COLUMN Nome1 TO Nome_123;
>
>
> gostaria que antes de exeuctar isso verificasse se isso já foi
> executado anteriormente... como faço isso no fb?
>
>
> vlw.
>
>
> ______________________________________________
> 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