[firebase-br] ver se transação já foi executada anteriormente
Daniel Sonda
daniel em mhnet.com.br
Seg Jan 26 16:44:33 -03 2009
Não sei qual o problema...
Tenta criar uma store procedure e rodar o execute block dentro dela só
pra testar...
Quem sabe mais alguém da lista possa ajudar...
Att.
Daniel Sonda
www.h2jsolucoes.com.br
Cássio escreveu:
> ta ae.
>
> EXECUTE BLOCK
> AS
> begin
> IF (EXISTS(SELECT RDB$CONSTRAINT_NAME
> FROM RDB$RELATION_CONSTRAINTS
> WHERE (RDB$RELATION_NAME = 'NOTA_PROMISSORIA')
> AND (RDB$CONSTRAINT_NAME = 'FK_ID_REAJUSTE'))) THEN
> begin
> update estados set nome_uf='Ac1' where stado ='AC' -- só
> para teste, não é este comando e não estou executando com este
> comentário.
> end
> end
>
> Daniel Sonda escreveu:
>> 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
>>
>> O erro diz linha 10 coluna 8...
>> Tem mais algum comando antes do EXECUTE BLOCK?
>> Você poderia postar o comando inteiro?
>>
>> Att.
>> Daniel Sonda
>> www.h2jsolucoes.com.br
>>
>>
>>
>> Cássio escreveu:
>>> 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
>>>>
>>>
>>>
>>> ______________________________________________
>>> 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
>
>
>
>
Mais detalhes sobre a lista de discussão lista