[firebase-br] ver se transação já foi executada anteriormente

Cássio cassio.hc em gmail.com
Sex Jan 23 12:08:53 -03 2009


vlw pelo retorno.
como eu faço pra já no sql testar se for = 1 faz.. qual a sintaxe?

tipo assim, exemplo:

IF (
SELECT COUNT(*) as num
FROM RDB$RELATION_CONSTRAINTS
WHERE  (RDB$RELATION_NAME = 'Minha_Tab')
AND (RDB$CONSTRAINT_NAME = 'FK_ID_') = 0 ) THEN

      faz um insert;

como fica para o fb?


Escovador de Bits escreveu:
> 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
>>
> 
> ______________________________________________
> 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