我无法在mysql上运行触发器

时间:2015-07-06 15:46:03

标签: mysql sql triggers

我在mySQL上有这些表(我在命令行上写了所有)

case $num in
    +([0-9])*(.)*([0-9]) )
          # Variable positive integer
      echo "positive integer"
          ;;
    *) 
          # Not a positive integer
      echo "NOPE"
      exit
          ;;
esac

现在我想创建一个触发器,每当我在TITOLO(isin varchar(12), maxAss int, minAss int, primary key(isin)) QUOTAZIONE(id int, min int, max int, date date, isin varchar(12), primary key(id), foreign key(isin) references TITOLO(isin)) 中插入一行时,它会检查QUOTAZIONE是否为真更新表min < minASS or max > maxAss上的值。

TITOLO

但是控制台写DELIMITER $$ CREATE TRIGGER AggiornaTitolo AFTER INSERT ON quotazione FOR EACH ROW BEGIN DECLARE massimo int; DECLARE minimo int; SELECT maxAss, minAss INTO massimo, minimo FROM titolo WHERE titolo.isin = NEW.isin; IF massimo > maxAss THEN UPDATE titolo SET maxAss = massimo; IF minimo < minAss THEN UPDATE titolo SET minAss = minimo; END IF; END; $$ DELIMITER ; 有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

作为McAdams331 already pointed out,您错过了第二个ENDIF

00000001 DELIMITER $$
00000002 CREATE TRIGGER AggiornaTitolo
00000003 AFTER INSERT ON quotazione
00000004 FOR EACH ROW BEGIN
00000005    DECLARE massimo int;
00000006    DECLARE minimo int;
00000007    SELECT maxAss, minAss INTO massimo, minimo FROM titolo WHERE titolo.isin = NEW.isin;
00000008    IF massimo > maxAss THEN
00000009        UPDATE titolo
00000010        SET maxAss = massimo;
00000011        IF minimo < minAss THEN
00000012            UPDATE titolo
00000013            SET minAss = minimo; 
00000014        END IF;
<missing>   END IF;          
00000015 END;
00000016 $$ DELIMITER ;