Page 1 of 1

Trigger que actualice la misma tabla

PostPosted: Sun Mar 07, 2021 5:20 pm
by santidedos
Buenas tardes compañeros,
Estoy buscando como actualizar desde un trigger, un campo de la misma tabla donde se encuentra el trigger. El trigger está en una tabla llamada usuarios y la idea es que, cuando se realiza una actualización en esa tabla, que desde el trigger se complete el ultimo campo de esa tabla con la función CONNECTION_ID(), que guarda el numero de id de la conexión con MYSQL. Gracias de antemano!

Re: Trigger que actualice la misma tabla

PostPosted: Sun Mar 07, 2021 6:56 pm
by artu01
El trigger se dispara o ejecuta para actualizar a la tabla "B" después que a la tabla "A" se le hace un INSERT o UPDATE o DELETE, no tiene sentido hacerlo a la misma tabla

Re: Trigger que actualice la misma tabla

PostPosted: Sun Mar 07, 2021 8:38 pm
by santidedos
Tiene sentido porque me resolvería. Según leí hay maneras de hacerlo, pero no conozco la sintaxis.

Re: Trigger que actualice la misma tabla

PostPosted: Sun Mar 07, 2021 10:53 pm
by cmsoft
Podria ser algo asi:
Code: Select all  Expand view

DELIMITER $$

USE `mibasededatos`$$

DROP TRIGGER /*!50032 IF EXISTS */ `ActualizarId`$$

CREATE
    TRIGGER `ActualizarId` AFTER INSERT ON `usuarios`
    FOR EACH ROW BEGIN
   
    UPDATE usuarios SET idconection = CONNECTION_ID()
    WHERE usuario = NEW.usuario;
    END;
$$

DELIMITER ;
 

Y deberias crear una igual para el UPDATE

Re: Trigger que actualice la misma tabla

PostPosted: Sun Mar 07, 2021 11:45 pm
by santidedos
Muchas graciass.. probé como me dijiste pero no me funciona. No me tira error de sintaxis, pero no me actualiza el campo.

Re: Trigger que actualice la misma tabla

PostPosted: Mon Mar 08, 2021 12:18 am
by artu01
cmsoft wrote:Podria ser algo asi:
Code: Select all  Expand view

DELIMITER $$

USE `mibasededatos`$$

DROP TRIGGER /*!50032 IF EXISTS */ `ActualizarId`$$

CREATE
    TRIGGER `ActualizarId` AFTER INSERT ON `usuarios`
    FOR EACH ROW BEGIN
   
    UPDATE usuarios SET idconection = CONNECTION_ID()
    WHERE usuario = NEW.usuario;
    END;
$$

DELIMITER ;
 

Y deberias crear una igual para el UPDATE

Creo k te falta el trigger para el update
Code: Select all  Expand view

CREATE
    TRIGGER `ModificaUsu` AFTER UPDATE ON `usuarios`
    FOR EACH ROW BEGIN
   
    UPDATE usuarios SET idconection = CONNECTION_ID()
    WHERE usuario = OLD.usuario;
    END;
 

Re: Trigger que actualice la misma tabla

PostPosted: Mon Mar 08, 2021 2:16 am
by Marcelo Via Giglio
Holas,

el tema es que defines un trigger para que se dispare cuando se modifca una tabla, pero el trigger en si vuelve a modificar la misma tabla, entonces se vuelve una ejecuci'on infinita, creo que hay algo explisito que debes hacer para este caso, busca la documentacion

saludos

Marcelo