gpt4 book ai didi

mysql - 创建触发器 phpmyadmin 中的问题

转载 作者:行者123 更新时间:2023-11-29 18:49:35 25 4
gpt4 key购买 nike

我在 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 <> NEW.id_ubicacion) THEN'

谢谢。

最佳答案

  1. 检查 DECLARE 语句上方的触发器内是否存在任何其他语句。如果是这样,那么它可能会抛出错误。

  2. 检查您的分隔符。默认情况下,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;

关于mysql - 创建触发器 phpmyadmin 中的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44420997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com