我无法在 mysql 上触发 运行
I can not get run trigger on mysql
我在 mySQL 上有这些 table(我全部写在命令行上)
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
是否为真更新 table [=16] 上的值=].
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.
有人可以帮我吗?
因为 你错过了第二个 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 ;
我在 mySQL 上有这些 table(我全部写在命令行上)
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
是否为真更新 table [=16] 上的值=].
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.
有人可以帮我吗?
因为 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 ;