我在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 ;
有人可以帮助我吗?
答案 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 ;