Trigger que actualice la misma tabla

Trigger que actualice la misma tabla

Postby santidedos » Sun Mar 07, 2021 5:20 pm

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!
santidedos
 
Posts: 45
Joined: Fri Aug 16, 2019 12:51 am

Re: Trigger que actualice la misma tabla

Postby artu01 » Sun Mar 07, 2021 6:56 pm

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
fwh 17.12, harbour 3.2.0, pelles C, bcc7, Ms-Sql
artu01
 
Posts: 400
Joined: Fri May 11, 2007 8:20 pm
Location: Lima

Re: Trigger que actualice la misma tabla

Postby santidedos » Sun Mar 07, 2021 8:38 pm

Tiene sentido porque me resolvería. Según leí hay maneras de hacerlo, pero no conozco la sintaxis.
santidedos
 
Posts: 45
Joined: Fri Aug 16, 2019 12:51 am

Re: Trigger que actualice la misma tabla

Postby cmsoft » Sun Mar 07, 2021 10:53 pm

Podria ser algo asi:
Code: Select all  Expand view  RUN

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
User avatar
cmsoft
 
Posts: 1293
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Trigger que actualice la misma tabla

Postby santidedos » Sun Mar 07, 2021 11:45 pm

Muchas graciass.. probé como me dijiste pero no me funciona. No me tira error de sintaxis, pero no me actualiza el campo.
santidedos
 
Posts: 45
Joined: Fri Aug 16, 2019 12:51 am

Re: Trigger que actualice la misma tabla

Postby artu01 » Mon Mar 08, 2021 12:18 am

cmsoft wrote:Podria ser algo asi:
Code: Select all  Expand view  RUN

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  RUN

CREATE
    TRIGGER `ModificaUsu` AFTER UPDATE ON `usuarios`
    FOR EACH ROW BEGIN
   
    UPDATE usuarios SET idconection = CONNECTION_ID()
    WHERE usuario = OLD.usuario;
    END;
 
fwh 17.12, harbour 3.2.0, pelles C, bcc7, Ms-Sql
artu01
 
Posts: 400
Joined: Fri May 11, 2007 8:20 pm
Location: Lima

Re: Trigger que actualice la misma tabla

Postby Marcelo Via Giglio » Mon Mar 08, 2021 2:16 am

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
Marcelo Via Giglio
 
Posts: 1065
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 73 guests