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

Daniel Sonda daniel em mhnet.com.br
Sáb Jan 24 09:58:18 -03 2009


IF (EXISTS(
SELECT RDB$CONSTRAINT_NAME
FROM RDB$RELATION_CONSTRAINTS
WHERE  (RDB$RELATION_NAME = 'Minha_Tab')
AND (RDB$CONSTRAINT_NAME = 'FK_ID_') ) )  THEN

Att.
Daniel Sonda
www.h2jsolucoes.com.br



Cássio escreveu:
> 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
>
>
> ______________________________________________
> 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
>
> __________ Información de ESET Smart Security, versión de la base de 
> firmas de virus 3792 (20090123) __________
>
> ESET Smart Security ha comprobado este mensaje.
>
> http://www.eset.com
>
>
>
>




Mais detalhes sobre a lista de discussão lista