在mysql中触发故障

时间:2013-09-30 23:06:42

标签: mysql triggers

有人知道我的sintaxys中的错误是什么?

CREATE TRIGGUER safe_pass AFTER UPDATE ON usuario
FOR EACH ROW BEGIN

IF OLD.clave <> NEW.clave THEN
    UPDATE usuario SET Clave = SHA1(MD5(NEW.clave)) WHERE id_usuario = NEW.id_usuario;
END IF;

END;

#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 'TRIGGUER safe_pass AFTER UPDATE ON usuario
FOR EACH ROW BEGIN

IF OLD.clave <' at line 1

我有使用SQL Server的经验,但MySQL对我来说是一个头痛。 我拥有的MySQL版本是MySQL数据库版本5.0.51b。

谢谢和问候


对不起,我真的很抱歉我的错误,我做了改变Infinity建议我。

错误SQL:

CREATE TRIGGER safe_pass AFTER UPDATE ON usuario
FOR EACH ROW BEGIN

IF OLD.clave <> NEW.clave THEN
UPDATE usuario SET Clave = SHA1( MD5( NEW.clave ) ) WHERE id_usuario = NEW.id_usuario

END IF;
END;

结果是:

#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 'END IF' at line 6 

谢谢Siride,我试试这个:

CREATE TRIGGER safe_pass AFTER UPDATE ON usuario
FOR EACH ROW BEGIN

IF OLD.clave <> NEW.clave THEN
UPDATE usuario SET Clave = SHA1( MD5( NEW.clave ) ) WHERE id_usuario = NEW.id_usuario;

END IF;
END;

结果是:

#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 '' at line 5 

我必须从控制台执行此操作,最终脚本为:

DELIMITER //

CREATE TRIGGER safe_pass BEFORE UPDATE ON usuario
FOR EACH ROW BEGIN

IF OLD.clave <> NEW.clave THEN
    SET NEW.clave = SHA1(MD5(NEW.clave));
END IF;

END;//

DELIMITER ;

3 个答案:

答案 0 :(得分:1)

最后我解决了这个问题。我必须从控制台进行操作,最终的脚本是:

DELIMITER //

CREATE TRIGGER safe_pass BEFORE UPDATE ON usuario
FOR EACH ROW BEGIN

IF OLD.clave <> NEW.clave THEN
    SET NEW.clave = SHA1(MD5(NEW.clave));
END IF;

END;//

DELIMITER ;

答案 1 :(得分:0)

您似乎对MySQL非常好,您只是尝试使用TRIGGUER找到TRIGGER键盘: - )

答案 2 :(得分:0)

TRIGGUER问题外,您还在UPDATEIF语句末尾的分号处停了。