我的桌子的结构是:
id id_pp id_a id_u fecha_accion tiempo
25 6 2 6 2018-07-06 11:53:44 NULL
26 6 3 3 2018-07-06 12:11:13 NULL
59 6 2 6 2018-07-10 10:37:28 NULL
63 6 3 3 2018-07-10 11:03:49 NULL
64 6 5 3 2018-07-10 11:03:56 NULL
65 6 7 3 2018-07-10 11:04:05 NULL
66 6 6 3 2018-07-10 11:04:08 NULL
67 6 8 3 2018-07-10 11:04:13 NULL
68 6 9 3 2018-07-10 11:04:21 NULL
注意:fecha_accion是一个时间戳。
我想用触发器更新前几行,但我没有任何想法吗?
触发:
DROP TRIGGER IF EXISTS vtas_historial_acciones_BEFORE_INSERT;
DELIMITER //
CREATE TRIGGER `vtas_historial_acciones_BEFORE_INSERT` BEFORE INSERT ON vtas_historial_acciones
FOR EACH ROW
BEGIN
SET @id = (select id from vtas_historial_acciones where id_pp = new.id_pp order by id desc limit 1);
SET @fecha = (select fecha_accion from vtas_historial_acciones where id_pp = new.id_pp order by id desc limit 1);
UPDATE vtas_historial_acciones SET `tiempo` = TIMESTAMPDIFF(HOUR,@fecha_accion,NOW()) where id = @id;
END; //
DELIMITER ;
错误:
1442-无法更新存储函数/触发器中的表'vtas_historial_acciones',因为调用该存储函数/触发器的语句已使用该表。
答案 0 :(得分:0)
在触发器中,您可以使用SET NEW.<column name> = value
语句仅更改当前记录的值。但是不可能在触发器处更新另一个表的记录。
在这种情况下,建议您遵循以下步骤: