null输出触发错误

时间:2012-12-13 17:08:03

标签: php mysql sql syntax triggers

这是我的触发器:

create trigger wyplacamy before insert on `skladki_wyplaty`
for each row
BEGIN
  SELECT p.wysokosc_skladki, p.ilosc_miesiecy INTO @wysokosc_skladki, @ilosc_miesiecy
    FROM skladki_aktualne p
    WHERE p.pesel = NEW.pesel AND p.id_ubezpieczenia = NEW.id_ubezpieczenia;

  SET NEW.wyoskosc_wyplaty = @wysokosc_skladki / @ilosc_miesiecy *75;
END
$$

这有效,但“wyoskosc_wyplaty”的iutpput为NULL,即使是wysokosc_skladki = 8000,ilosc_miesiecy = 8。

1 个答案:

答案 0 :(得分:1)

您需要在使用它们之前声明变量。

delimiter $$
create trigger wyplacamy before insert on `skladki_wyplaty`
for each row
BEGIN

  DECLARE var_wysokosc_skladki INT;
  DECLARE var_ilosc_miesiecy INT; 

  SELECT p.wysokosc_skladki, p.ilosc_miesiecy INTO var_wysokosc_skladki, var_ilosc_miesiecy
  FROM skladki_aktualne p
  WHERE p.pesel = NEW.pesel 
  AND p.id_ubezpieczenia = NEW.id_ubezpieczenia;

  SET NEW.wyoskosc_wyplaty = var_wysokosc_skladki / var_ilosc_miesiecy * 75;

END
$$