MySQL服务器版本,用于在''在线附近使用正确的语法

时间:2015-12-01 19:13:42

标签: mysql

我发现了类似的问题,但他们总是在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中,它没有任何问题。

1 个答案:

答案 0 :(得分:0)

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

DELIMITER //

然后,不要在END语句后面加分号,而是使用新的分隔符:

END //

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