简体   繁体   English

创建MySQL触发器时​​出错

[英]Error creating MySQL Trigger

I'm trying to create this trigger but i'm getting 我正试图创建这个触发器,但我得到了

[Err] 1064 - You have an error in your SQL syntax; [错误] 1064 - 您的SQL语法有错误; check the manual that corresponds to your MySQL server version for the right syntax to use near '; 检查与您的MySQL服务器版本对应的手册,以便在'附近使用正确的语法; CREATE TRIGGER ca_passwd_trigger BEFORE UPDATE ON users FOR EACH ROW BEGIN ' at line 1 创建TRIGGER ca_passwd_trigger之前更新用户FOR EACH ROW BEGIN'在第1行

delimiter $$
DROP TRIGGER IF EXISTS ca_passwd_trigger ;
$$
CREATE TRIGGER ca_passwd_trigger BEFORE UPDATE ON users
FOR EACH ROW
BEGIN
    IF ((NEW.passwd <=> OLD.passwd) = 0) THEN
        SET NEW.passwd_modified_at = NOW();
    END IF;
END;$$
delimiter ;

In your query you added the query terminator ; 在您的查询中添加了查询终止符; with the delimiter $$ in two places. 在两个地方用分隔符$$ The below query is having proper query terminators and delimiters. 以下查询具有正确的查询终止符和分隔符。

DELIMITER $$
DROP TRIGGER IF EXISTS ca_passwd_trigger; -- removed the delimiter $$ after the terminator ;
CREATE TRIGGER ca_passwd_trigger BEFORE UPDATE ON users
FOR EACH ROW
BEGIN
    IF ((NEW.passwd <=> OLD.passwd) = 0) THEN
        SET NEW.passwd_modified_at = NOW();
    END IF;
END$$  -- removed the terminator ; before the delimiter $$
DELIMITER ;

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

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