2016-05-31 81 views
1

我试图创建这个触发,但我发现错误创建MySQL的触发

[错误] 1064 - 你在你的SQL语法错误;检查手册 对应于您的MySQL服务器版本的正确语法 使用附近'; CREATE TRIGGER ca_passwd_trigger BEFORE UPDATE上的用户 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 ; 

回答

3

在查询你在两个地方用分隔符$$添加查询终止;。以下查询具有正确的查询终止符和分隔符。

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 ;