Версия сервера 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;

Я сделал столько модификаций, что уже не знаю, насколько это правильно.

ГРАЦ содержит:

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 это работало без проблем.


person Kris1112    schedule 01.12.2015    source источник


Ответы (1)


Предполагая, что SQL правильный, вот что, по моему мнению, происходит. В вашем операторе begin... end есть операторы, оканчивающиеся точкой с запятой, и он достигает оператора в строке 9 и считает, что вы закончили определение триггера. Триггер в этой точке не определен с правильным синтаксисом, поэтому он не работает. Попробуйте определить новый разделитель перед вашим первым оператором:

DELIMITER //

Затем, вместо того, чтобы ставить точку с запятой после оператора END, используйте новый разделитель:

END //

Это позволит вам использовать точки с запятой в вашем триггере без синтаксической ошибки.

person MHardwick    schedule 01.12.2015