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

Cássio cassio.hc em gmail.com
Seg Jan 26 10:57:11 -03 2009


continua sem funcionar. Não sei o que pode ser. vlw.


nDaniel Sonda escreveu:

> Você não pode executá-lo diretamente.
> Deve estar dentro de uma stored procedure ou usar o EXECUTE BLOCK:
> 
> EXECUTE BLOCK
> as
> begin
>  IF (EXISTS(SELECT RDB$CONSTRAINT_NAME
>    FROM RDB$RELATION_CONSTRAINTS
>    WHERE  (RDB$RELATION_NAME = 'Minha_Tab')
>    AND (RDB$CONSTRAINT_NAME = 'FK_ID_') ) )  THEN
>  begin
>     /* seu código de atualização */
>  end
> end
> 
> Att.
> Daniel Sonda
> www.h2jsolucoes.com.br
> 
> 
> 
> Cássio escreveu:
>> 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
>>>
>>
>>
>> ______________________________________________
>> 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 3795 (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