[firebase-br] RES: RES: Interromper um insert

Alexandre camilo em apollosistemas.com.br
Sex Abr 25 12:06:52 -03 2014


O problema é que quando foi sugerido que ele utilizasse o UPDATE OR INSERT,
ele disse que não poderia alterar a aplicação, front end, sendo assim, não
pode mudar a chamada do insert para a procedure.

Perguntei apenas para conhecimento, e aprender coisas novas sempre é uma boa
né.

Obrigado.


Alexandre Camilo.



-----Mensagem original-----
De: lista [mailto:lista-bounces em firebase.com.br] Em nome de jackson oliveira
Enviada em: sexta-feira, 25 de abril de 2014 11:51
Para: FireBase
Assunto: Re: [firebase-br] RES: Interromper um insert

*O uso da procedure é o seguinte..*. na aplicação, front end, onde está
sendo chamado o insert, altere para a chamada de uma procedure que você irá
criar conforme a sugestão dada aqui; Na procedure, você coloca toda a
lógica de INSERT, UPDADE E DELETE identificada pelo parâmetro de entrada
que irá colocar na procedure.

*Tipo assim:*

*Na aplicação (Tire o insert da string e ponha a procedure)*

str = "call prc_nome_da_tabela ( p_tipo_acao )" -- p_tipo_acao : I =
Insert, U = Update, D = Delete

*Na procedure (exemplo conteitual)*

create procedure prc_nome_da_tabela ( p_tipo_acao)

as

begin

  if p_tipo_acao in ('I','U') then

    select count(*) from tabela -- para verificar se o registro é duplicado
ou não

    if registro duplicado then
      update
     else
      insert
    end if;

  else if p_tipo_acao = 'D' then

    delete;

  end if;

  commit;

end;




Em 25 de abril de 2014 11:25, Alexandre
<camilo em apollosistemas.com.br>escreveu:

> Bom, ele disse que não pode alterar a aplicação, portanto a alteração
> deverá
> ser feita apenas no banco de dados,
> Fiquei muito curioso em como ele utilizaria uma procedure para isso sem
> fazer o uso de trigger,
> Será que vocês poderiam explicar a idéia??
>
> Alexandre Camilo.
>
>
> -----Mensagem original-----
> De: lista [mailto:lista-bounces em firebase.com.br] Em nome de jackson
> oliveira
> Enviada em: sexta-feira, 25 de abril de 2014 11:03
> Para: FireBase
> Assunto: Re: [firebase-br] Interromper um insert
>
> Frederico, tudo bem ?
> Não utilize trigger não, pode dar mutação, ter os perigos de uma tabela
sua
> travar em processamento com DML... meu, se me permite, faça uma procedure
> parametrizada para INSERT, UPDATE E DELETE, e se for o caso, controle por
> commit e verique cada insert com um SELECT COUNT na tabela antes de um
novo
> insert ou update; Se desejar, entra no skype que lhe explico ( jackmosp )
>
>
> Em 25 de abril de 2014 10:44, Frederico Godoi
> <frederico.godoi em gmail.com>escreveu:
>
> > Nesse caso é mais complexo.
> > A aplicação está mandando um novo Insert, não seria apenas uma tentativa
> de
> > duplicar o registro? A chave primária não está repetindo?
> > Se não está repetindo a chave primária, não sei se a trigger vai
> > interromper o Insert.
> >
> >
> > 2014-04-25 10:40 GMT-03:00 Renan Rogowski Pozzo <renanrpozzo em gmail.com>:
> >
> > > Bom dia Frederico,
> > > a questão é que não posso mudar a aplicação, que está mandando o
> comando
> > de
> > > INSERT. Teria que tratar no banco a entrada desse dado.
> > >
> > > Abraço,
> > > Renan Rogowski Pozzo
> > >
> > > *"Entrega o teu caminho ao Senhor; confia nele, e ele o fará." Salmos
> > 37:5*
> > >
> > >
> > > Em 25 de abril de 2014 10:36, Frederico Godoi
> > > <frederico.godoi em gmail.com>escreveu:
> > >
> > > > Não seria o caso de você fazer um UPDATE OR INSERT ?
> > > > Existe desde o Firebird 2.1.
> > > >
> > > > Frederico
> > > >
> > > >
> > > > 2014-04-25 10:31 GMT-03:00 Renan Rogowski Pozzo <
> renanrpozzo em gmail.com
> > >:
> > > >
> > > > > Bom dia,
> > > > > estou com uma situação e gostaria de uma dica.
> > > > >
> > > > > No momento de fazer um insert em uma tabela, no caso antes de
fazer
> o
> > > > > insert, eu precisaria verificar se o registro que está sendo
> inserido
> > > já
> > > > > existe, e se existir não fazer o novo insert.
> > > > >
> > > > > Pensei em utilizar uma trigger de after insert.
> > > > > Nesse caso eu não poderia usar uma exceção, pois não quero que
pare
> o
> > > > > processo ou apresente alguma mensagem. Apenas gostaria que se
> > > existisse o
> > > > > registro o novo não fosse inserido, mas prosseguisse.
> > > > >
> > > > > Alguma sugestão?
> > > > > Obrigado desde já.
> > > > >
> > > > > Abraço,
> > > > > Renan Rogowski Pozzo
> > > > >
> > > > > *"Entrega o teu caminho ao Senhor; confia nele, e ele o fará."
> Salmos
> > > > 37:5*
> > > > > ______________________________________________
> > > > > 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
> > > > >
> > > >
> > > >
> > > >
> > > > --
> > > > Frederico Godoi
> > > > ______________________________________________
> > > > 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
> > >
> >
> >
> >
> > --
> > Frederico Godoi
> > ______________________________________________
> > 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
>
______________________________________________
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