简体   繁体   English

MySQL触发语法错误#1064

[英]MySQL Trigger Syntax Error #1064

I am trying to implement a trigger in MySQL that will automatically add/modify a column when another one is added/modified. 我正在尝试在MySQL中实现一个触发器,该触发器将在添加/修改另一列时自动添加/修改一列。 Basically I want it to save a type as a slug in the type_sanitized column when a value is added/modified into type . 基本上我希望它保存一个type蛞蝓type_sanitized列时被添加/修改成一个值type

This is my initial try: 这是我最初的尝试:

DROP TRIGGER IF EXISTS ArticleTypes.insert_sanitized_article_type;

CREATE TRIGGER 'insert_sanitized_article_type'
AFTER INSERT
ON 'ArticleTypes'
FOR EACH ROW
SET NEW.type_sanitized = LOWER(REPLACE(TRIM(NEW.type), ' ', '-'));

DROP TRIGGER IF EXISTS ArticleTypes.update_sanitized_article_type;

CREATE TRIGGER 'update_sanitized_article_type'
AFTER UPDATE
ON 'ArticleTypes'
FOR EACH ROW 
SET NEW.type_sanitized = LOWER(REPLACE(TRIM(NEW.type), ' ', '-'));

After seeing suggestions online, I have tried adding delimiters like this: 在网上看到建议后,我尝试添加如下定界符:

DROP TRIGGER IF EXISTS ArticleTypes.insert_sanitized_article_type;

DELIMITER $$
CREATE TRIGGER 'insert_sanitized_article_type'
AFTER INSERT
ON 'ArticleTypes'
FOR EACH ROW 
BEGIN
SET NEW.type_sanitized = LOWER(REPLACE(TRIM(NEW.type), ' ', '-'));
END$$
DELIMITER ;

DROP TRIGGER IF EXISTS ArticleTypes.update_sanitized_article_type;

DELIMITER $$
CREATE TRIGGER 'update_sanitized_article_type'
AFTER UPDATE
ON 'ArticleTypes'
FOR EACH ROW 
BEGIN
SET NEW.type_sanitized = LOWER(REPLACE(TRIM(NEW.type), ' ', '-'));
END$$
DELIMITER ;

I get the following error for both of them: 我对他们两个都收到以下错误:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''insert_sanitized_article_title'
AFTER INSERT
ON 'ArticleTypes'
FOR EACH ROW 
BE' at line 1 

This is my first time creating triggers in MySQL so it might be obvious but I haven't been able to figure it out in 2 hours of searching so any help would be greatly appreciated. 这是我第一次在MySQL中创建触发器,因此这很明显,但我无法在2小时的搜索中弄清触发器,因此将不胜感激。

Remove the apostrophes. 删除撇号。

DROP TRIGGER IF EXISTS ArticleTypes.insert_sanitized_article_type;

DELIMITER $$
CREATE TRIGGER insert_sanitized_article_type
AFTER INSERT
ON ArticleTypes
FOR EACH ROW 
BEGIN
SET @type_sanitized = LOWER(REPLACE(TRIM(@type), ' ', '-'));
END$$
DELIMITER ;

DROP TRIGGER IF EXISTS ArticleTypes.update_sanitized_article_type;

DELIMITER $$
CREATE TRIGGER update_sanitized_article_type
AFTER UPDATE
ON ArticleTypes
FOR EACH ROW 
BEGIN
SET @type_sanitized = LOWER(REPLACE(TRIM(@type), ' ', '-'));
END$$
DELIMITER ;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM