Ver Mensaje Individual
  #4 (permalink)  
Antiguo 21/10/2009, 05:16
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: copiar valor de un campo de la tabla en otro campo de la misma tabla

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 original
  1. DROP TRIGGER IF EXISTS SET_ITEMFACTURA ;
  2. DELIMITER $$
  3. CREATE TRIGGER SET_ITEMFACTURA BEFORE INSERT
  4. ON FACTURA_DETALLE
  5. FOR EACH ROW
  6. BEGIN
  7.         IF(SELECT MAX(SUBITEM) FROM FACTURA_DETALLE WHERE FACTURA_ID=NEW.FACTURA_ID) IS NULL THEN
  8.       SET NEW.SUBITEM = 1;
  9.     ELSE
  10.       SET NEW.SUBITEM = (SELECT MAX(SUBITEM) FROM FACTURA_DETALLE WHERE FACTURA_ID=NEW.FACTURA_ID) + 1;
  11.     END IF;
  12. END$$
  13. 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.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)