我在mySQL上有这些表(我都是在命令行上写的)
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 ;
但是控制台写
error 1064 (42000) at line 14.
有人能帮我吗?
最佳答案
因为你错过了第二个:
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 ;