拜托,我做这个触发器是为了更新表 rating
每次插入后,如果表中已经插入了2列(id\u prof,id\u etud),则会出现此错误
> #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 6
触发器:
CREATE TRIGGER Before_Insert_Rate
BEFORE INSERT ON rating
FOR EACH ROW
BEGIN
IF (EXISTS(SELECT * FROM rating WHERE id_prof=NEW.id_prof and id_etud = NEW.id_etud)) THEN
UPDATE `rating` SET `rate` = NEW.rate WHERE `id_prof` = NEW.id_prof and `id_etud` = NEW.id_etud;
ELSE INSERT INTO rating VALUES (NEW.idprof,New.rate,New.id_etud);
END IF
END
DELIMITER ;
3条答案
按热度按时间oyxsuwqo1#
必须先设置分隔符。更改为:
wi3ka0sx2#
我用电脑解决了
ON DUPLICATE KEY
在查询而不是触发器上查询:
zzlelutf3#
来自官方参考手册。
触发器可以访问自己表中的新旧数据。触发器也可以影响其他表,但不允许修改已被调用函数或触发器的语句使用(用于读或写)的表。
这意味着表上没有查询
X
可以从表中插入、更新或删除X
; 这也意味着如果表上的触发器X
修改表格Y
,任何使用这两个表的查询都将失败X
以及Y
这“触发”了它。例子:
UPDATE x INNER JOIN y ON x.id = y.id SET x.something = 1, y.something = 2
会引起BEFORE UPDATE ON x
触发器(更新、插入或删除y
)失败。