我发现了类似的问题,但他们总是在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中,它没有任何问题。
答案 0 :(得分:0)
假设SQL是正确的,这就是我认为正在发生的事情。在你的begin ... end语句中,你的语句以分号结尾,并且它会击中第9行的语句,它认为你已经完成了触发器的定义。此时的触发器未使用正确的语法定义,因此失败。尝试在第一个语句之前定义一个新的分隔符:
DELIMITER //
然后,不要在END语句后面加分号,而是使用新的分隔符:
END //
这将使您能够在触发器中使用分号而不会出现语法错误。