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

Cássio cassio.hc em gmail.com
Sáb Jan 24 10:22:56 -03 2009


opa. vlw pelo retorno.
Mas este código não está funcionando. Acho que é com a sintaxe. porque 
se executar só o select retorna os registros..

SQL Error:  Dynamic SQL Error SQL error code = -104 Token unknown - line 
1, column 1 IF. Error Code: -104. Invalid token The SQL: IF

vlw

Daniel Sonda escreveu:

> 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
>>
>>
>>
>>
> 
> ______________________________________________
> 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