Ir para conteúdo

POWERED BY:

Arquivado

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

DackAle

Trigger

Recommended Posts

E ae galera

 

Seguinte tenho duas tabelas

 

tb_compra

tb_compra_temp

 

e tenho outra tabela que salva o número da ultima compra

 

tb_ultima_compra

 

bom existe um TRIGGER nas duas primeiras tabelas, que quando é inserido algo nelas, é salvo na tb_ultima_compra o codigo da compra, pra usar como parametro para novas compras e nunca se repetir o código da compra, até ai OK

 

O problema é que na tb_compra_temp, fica algumas comprar temporarias que dpeois de um tempo são jogadas para tb_compra e elas já tem o número de compra certo, problema é que quando são copiadas, elas acionam o trigger e jogam o número da compra na tb_ultima_compra e o problema é que é inferior esse numero geralmente e causa conflitos e erro no sistema...

 

a trigger está assim

 

CREATE TRIGGER tr_nova_compra ON dbo.tb_compra FOR INSERTASDECLARE @cd_compra AS INTEGERSELECT @cd_compra = cd_compra FROM insertedDELETE FROM tb_ultima_compraINSERT INTO tb_ultima_compra (cd_ultima_compra)VALUES (@cd_compra)

eu queria sber se existe como usar um IF em trigger ?

 

No caso verificaria se a cd_compra atual é maior que a cd_ultima_compra, se fosse continua... basicamente isso resolveria o problema todo :P

 

Mas não manjo de Trigger para fazer isso, alguem pode me dar um help ?

 

Abraços e valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

putz nunca trampei com trigger.. mas se for igual a procedure ficaria assim:

 

CREATE TRIGGER tr_nova_compra ON dbo.tb_compra FOR INSERTASDECLARE @cd_compra AS INTEGERDECLARE @MAXcd_compra AS INTEGER --variavel que irá armazenar o codigo maximo buscado na tabela tb_compraSELECT @cd_compra = cd_compra FROM insertedselect @MAXcd_compra = max(cd_compra) from tb_compra --buscando o codigo maximo que esta na tabela tb_compraif (@cd_compra > @MAXcd_compra) --if comparando se o @cd_compra é maior que o @MAXcd_compra ta tabela compra begin	DELETE FROM tb_ultima_compra	INSERT INTO tb_ultima_compra (cd_ultima_compra)	VALUES (@cd_compra)end

verifica ai se qdo. for buscar o ultimo codigo se o MAX já naum serviria, dai nem precisaria de uma tabela pra armazenar o ultimo codigo.... ve ai se naum fica mais rapido, se ficar beleza...

 

 

t+

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.