我发现了类似的问题,但它们始终在php中。



CREATE TRIGGER PL_gl
BEFORE INSERT ON Zaznam_o_vstrel_br
for each row
BEGIN
IF (NEW.Autor_branky IS NOT NULL) then
UPDATE hrac
SET Pocet_golu = Pocet_golu + 1
WHERE ID_num = NEW.Autor_branky; /*ERROR HERE*/
END IF;
END;


我做了很多修改,以至于我不知道它是如何正确的。

hrac包含:

create table hrac (
ID_num INT AUTO_INCREMENT Primary key,
Jmeno VARCHAR (50) NOT NULL,
Jmeno_tymu VARCHAR (50) NOT NULL,
Datum_narozeni DATE,
Domovsky_klub VARCHAR (50),
Cislo_dresu INT,
Pocet_golu INT);


错误说您的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册,以在第9行的''附近使用正确的语法。这没有告诉我任何东西,因此我尝试了至少20种组合。在SQL中,它可以正常工作。

最佳答案

假设SQL是正确的,这就是我认为正在发生的事情。在begin ... end语句中,您有以分号结尾的语句,并且命中了第9行的语句,并且认为您已经完成了对触发器的定义。此时的触发器未使用正确的语法定义,因此失败。尝试在第一个语句之前定义一个新的定界符:

DELIMITER //


然后,不要在分号后加上分号,而应使用新的定界符:

END //


这将使您能够在触发器中使用分号而不会出现语法错误。

关于mysql - MySQL服务器版本可在第''行附近使用正确的语法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34028245/

10-11 03:10