[firebase-br] ver se transação já foi executada anteriormente
Cássio
cassio.hc em gmail.com
Seg Jan 26 14:20:41 -03 2009
estou usando a versão 2.1
Daniel Sonda escreveu:
> Qual versão do FB vc está usando?
>
> Att.
> Daniel Sonda
> www.h2jsolucoes.com.br
>
>
>
> Cássio escreveu:
>> este:
>>
>> SQL Error: Dynamic SQL Error SQL error code = -104 Token unknown -
>> line 10, column 8 end. Error Code: -104. Invalid token The SQL:
>> EXECUTE BLOCK
>>
>>
>>
>> Daniel Sonda escreveu:
>>> qual o erro apresentado?
>>>
>>> Att.
>>> Daniel Sonda
>>> www.h2jsolucoes.com.br
>>>
>>>
>>>
>>> Cássio escreveu:
>>>> 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
>>>>>
>>>>
>>>>
>>>> ______________________________________________
>>>> 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
>>>
>>
>>
>> ______________________________________________
>> 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