Mysql 创建触发器时出现语法错误
我试图在MySQL中创建一个新的触发器,但不管我怎么做,我都会遇到语法错误。我想在Mysql 创建触发器时出现语法错误,mysql,sql,Mysql,Sql,我试图在MySQL中创建一个新的触发器,但不管我怎么做,我都会遇到语法错误。我想在html\u id列中插入一个值,它是字母f和列id的串联: CREATE TRIGGER htmlid BEFORE INSERT ON makelist_food FOR EACH ROW BEGIN IF (NEW.html_id IS NULL) THEN NEW.html_id = CONCAT('f', NEW.id); END IF; END 我也试过: CREATE TRIGGER
html\u id
列中插入一个值,它是字母f
和列id
的串联:
CREATE TRIGGER htmlid
BEFORE INSERT ON makelist_food
FOR EACH ROW
BEGIN
IF (NEW.html_id IS NULL) THEN
NEW.html_id = CONCAT('f', NEW.id);
END IF;
END
我也试过:
CREATE TRIGGER htmlid
BEFORE INSERT ON makelist_food
FOR EACH ROW
BEGIN
IF (NEW.html_id IS NULL) THEN
INSERT INTO makelist_food SET html_id = CONCAT('f', NEW.id);
END IF;
END
和此(更改分隔符):
我得到的错误是:#1064-您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第6行“.html_id=CONCAT('f',NEW.id')附近使用的正确语法
我正在运行MySQL 5.5.22。尝试以下查询:
delimiter |
CREATE TRIGGER htmlid
BEFORE INSERT ON makelist_food
FOR EACH ROW
BEGIN
IF (NEW.html_id IS NULL) THEN
INSERT INTO makelist_food SET html_id = CONCAT('f', NEW.id);
END IF;
END
|
delimiter ;
我认为区别在于SET关键字。试试这个
DELIMITER $$
CREATE TRIGGER htmlid
BEFORE INSERT ON makelist_food
FOR EACH ROW
BEGIN
IF (NEW.html_id IS NULL) THEN
SET NEW.html_id = CONCAT('f', NEW.id);
END IF;
END$$
DELIMITER ;
这很有效,谢谢!您更改的唯一内容是将分隔符从$$更改为|,并键入小写的delimiter关键字。使用$$作为分隔符有任何已知问题吗?我认为区别在于SET关键字
DELIMITER $$
CREATE TRIGGER htmlid
BEFORE INSERT ON makelist_food
FOR EACH ROW
BEGIN
IF (NEW.html_id IS NULL) THEN
SET NEW.html_id = CONCAT('f', NEW.id);
END IF;
END$$
DELIMITER ;