Fórum Trigger com datediff #537419
17/11/2015
0
Eu preciso criar uma trigger que calcule o tempo entre o prazo de entrega e a data atual. esta é a tabela que ele deveria estar.
@edit
Detalhe, a diferença deve ser multiplicada pelo valor decimal "0.50" e deve entrar no campo multa_atraso.
CREATE TABLE Emprestimo ( IdEmprestimo INT(11) PRIMARY KEY, prazo_entrega DATE, data_emprestimo DATE, multa_atraso DECIMAL(10,2), )
E esse... bem, é o trigger que eu tentei criar... hahaha
DELIMITER $$
CREATE TRIGGER tr_multa
after insert ON emprestimo
for each row
BEGIN
if datediff(curdate(),prazo_entrega) < 0 or datediff(curdate(),prazo_entrega) = 0 then
update emprestimo set multa_atraso = ('0.00');
elseif datediff(curdate(),prazo_entrega) > 0 then
update emprestimo set multa_atraso = (datediff(curdate(),prazo_entrega)*0.50);
end if;
END
$$
Arthur
Curtir tópico
+ 0Post mais votado
17/11/2015
Os dados do registro que está sendo inserido devem ser referenciado pelo alias NEW.
Declare uma variável para receber o prazo de entrega corrente e utilize a variavel na trigger.
Algo como :
BEGIN declare vPrazoEntrega integer; select datediff(curdate(), NEW.prazo_entrega) INTO vPrazoEntrega; if vPrazoEntrega <= 0 then :
Ajustando os tipos de dados à sua necessidade, deve funcionar.
Entendeu o "espírito da coisa" ?
Marcos P
Gostei + 1
Mais Posts
17/11/2015
Arthur
select datediff(curdate(), NEW.prazo_entrega) INTO vPrazoEntrega;
Ela agora contem todos os valores que sairam no Datediff, mas para coloca-los na tabela de fato eu tenho que fazer algo como isso(dentro da trigger)?
if vPrazoEntrega <= 0 then update emprestimo set new.multa_atraso = 0;
digo igualar o campo da tabela a váriavel ( sei que soa confuso ) como insert into tabela(campo) values (variavel)
Gostei + 0
17/11/2015
Marcos P
vPrazoEntrega, recebe o valor de prazo_entrega para o registro que acabou de ser inserido ( after insert ).
O ( IF ) passa a ser feito a partir da variável e... é isso !
Se você deseja fazer alguma outra coisa, por favor, detalhe melhor sua necessidade.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)