Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

etspaz

trigger para atualizar varias tabelas

Recommended Posts

bom dia pessoal,

estou tentando aprender sobre trigger, e até agora só consigo fazer a trigger de auto- incremento em uma unica tabela, agora preciso de uma

que atualize mais de uma tabela.

exemplo, um dvd é devolvido, numa locadora, no momento que for dado a baixa, a tabela dos dvds cadastrados marque este como disponivel, no historico já marque a data de devolução e se o cliente atrasou o seu é debitado um o valor da multa

no seu saldo, porque é um sistema de quiosque onde os clientes trabalham com pré credito.

agradeço desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

etspaz beleza?

Cara você vai utilizar o comando UPDATE normalmente, para utiliza mais de um dentro de uma trigger, você irá separá-los por ; (ponto e vírgula), tem alguns links que poderão te ajudar:

 

http://forum.imasters.com.br/index.php?showtopic=210609

http://www.comunidade-firebird.org/cflp/do...s/CFLP_T003.PDF

http://www.destructor.de/firebird/trigger.htm

Compartilhar este post


Link para o post
Compartilhar em outros sites

muito bom, eu consegui fazer uma simples, porém teve um ponto que eu não soube aplicar, então modifiquei um pouco para poder testar.veja:

CREATE TRIGGER CADORCAMENTOPEDIDO_BU0 FOR CADORCAMENTO
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
  if (New.BAIXADO = 'V') then BEGIN
	insert into CADPEDIDO (CodCli, BLA BLA BLA BLA BLA...  Old.VLRACRE);
	insert into CADORCAMENTO (CodCli, BLA BLA BLA BLA BLA...  Old.VLRACRE);
   insert into TABELA2 (CodCli, BLA BLA BLA BLA BLA...  Old.VLRACRE);
  END
end


CREATE TRIGGER teste_multi_trigger3 FOR categoria
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
  if (New.cod_cat = 5 ) then BEGIN
	insert into produto (cod_prod,cod_cat_prod,desc_prod )values  (5,3,'CERTO');
	insert into teste_trigger (aqui )values  ('BELE');
   insert into teste_trigger2 (aqui2)values  ('HEHEHII');
  END
end

em cima está o exemplo do link que voce mostrou, em baixo está o que eu fiz.

este Old.VLRACRE, como funciona?

perceba que o insert eu fiz normal, informando um valor fixo a ser inserido.

obrigado pela ajuda http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ta, supondo que você tenha uma tabela PRODUTOS, que possui apenas dois campos, CODIGO, DESCRICAO.

Na trigger você manda um comando pra dar um UPDATE na tabela PRODUTOS no campo DESCRICAO. Se você utilizar o comando OLD.DESCRICAO, ele vai pegar o valor antigo que estava gravado neste campo, o valor que estava antes do UPDATE.

 

Espero que tenha entendido. http://forum.imasters.com.br/public/style_emoticons/default/natal_wink.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

tipo, para comparar o valor antigo com o atual e impor alguma restrição, por exemplo?

neste caso se sim, beleza.

Mas quando faz o insert com o old, serve quando eu quero guardar o valor antigo de um campo em outro, para ver tipo o saldo atual e anterior?

pelo que acho que entendi, existe o new que faz o contrario, pega o novo valor e utiliza conforme a necessidade.

to caminho certo ou não?

obrigado por me atender.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.