Cita: Y no podría crear un disparador que iamase a un procedimiento que sí lo hiciese??
Un TRIGGER bloquea la tabla en proceso. por ello es inútil intentarlo a través de un proceso.
Pruebalo como un BEFORE INSERT, y asegúrate de no estar ingresando el campo a modificar.
CREATE TRIGGER EMP_USERS_trinsNAME BEFORE INSERT
ON emp_users FOR EACH ROW
BEGIN
SET NEW.name = NEW.username;
END
No creo puntualmetente que no pueda cambiar la fila, porque yo hago tareas semejantes con otros trigger. Por ejemplo:
Código sql:
Ver originalDROP TRIGGER IF EXISTS SET_ITEMFACTURA ;
DELIMITER $$
CREATE TRIGGER SET_ITEMFACTURA BEFORE INSERT
ON FACTURA_DETALLE
FOR EACH ROW
BEGIN
IF(SELECT MAX(SUBITEM) FROM FACTURA_DETALLE WHERE FACTURA_ID=NEW.FACTURA_ID) IS NULL THEN
SET NEW.SUBITEM = 1;
ELSE
SET NEW.SUBITEM = (SELECT MAX(SUBITEM) FROM FACTURA_DETALLE WHERE FACTURA_ID=NEW.FACTURA_ID) + 1;
END IF;
END$$
DELIMITER ;
Este es un TRIGGER algo rústico que lo que hace es ponerle el número de subitem al detalle de una factura. Esta tarea ya no la hago de esta forma, pero el TRIGGER siempre funcionó bien, y como ves, estoy modificando la propia fila ingresada.