我在phpmyadmin中创建触发器时遇到问题。这是我的语法:
DECLARE n_ubicacion VARCHAR(45) DEFAULT '';
IF (OLD.id_ubicacion <> NEW.id_ubicacion) THEN
SELECT ubicacion INTO n_ubicacion FROM ubicacions WHERE id = NEW.id_ubicacion LIMIT 1;
END IF;
INSERT INTO historico_equipos(usuario, id_equipo, estado, ubicacion, empleado, f_asignacion, created_at) VALUES (CURRENT_USER(), NEW.id, NEW.id_estado, n_ubicacion, NEW.id_empleado, NEW.f_asignacion, CURRENT_DATE())
我不知道问题出在哪里。在phpmyadmin中显示下一个错误:
“DECLARE n_ubicacion VARCHAR(45)DEFAULT”附近的语法有问题; IF(OLD.id_ubicacion&lt;&gt; NEW.id_ubicacion)那么'
感谢。
答案 0 :(得分:0)
检查DECLARE语句上方的Trigger中是否存在任何其他语句。如果是这样,那么它可能会抛出错误。
检查分隔符。默认情况下,MySQL的分隔符为';'。因此,在看到第一个';'时,您的查询将会中断。因此在创建触发器之前使用一些其他分隔符。
示例:强>
DELIMITER //
CREATE TRIGGER ...
BEGIN
DECLARE n_ubicacion VARCHAR(45) DEFAULT '';
IF (OLD.id_ubicacion <> NEW.id_ubicacion) THEN
SELECT ubicacion INTO n_ubicacion FROM ubicacions WHERE id =
NEW.id_ubicacion LIMIT 1;
END IF;
INSERT INTO historico_equipos(usuario, id_equipo, estado, ubicacion, empleado, f_asignacion, created_at) VALUES (CURRENT_USER(), NEW.id, NEW.id_estado, n_ubicacion, NEW.id_empleado, NEW.f_asignacion, CURRENT_DATE())
END//
然后再次将DELIMITER更改为默认值。
DELIMITER ;