Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

sugerencia con trigger

Estas en el tema de sugerencia con trigger en el foro de Mysql en Foros del Web. tengo dos tablas.. productos y productos_precios en la tabla de productos_precios tengo un trigger a la tabla de productos que me actualiza un valor de ...
  #1 (permalink)  
Antiguo 28/04/2009, 12:15
 
Fecha de Ingreso: abril-2009
Mensajes: 17
Antigüedad: 15 años
Puntos: 1
sugerencia con trigger

tengo dos tablas..

productos y productos_precios

en la tabla de productos_precios tengo un trigger a la tabla de productos que me actualiza un valor de esa tabla

ahora si quiero hacer un update

UPDATE productos_precios SET precio = 100 WHERE idproductos = 100 AND idproductos IN (SELECT idproductos FROM productos WHERE idproductos = '100' AND estatus = 'A')

me marca error 1442
Can't update table 'productos' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

seguramente por que hago el select a la tabla productos...

pero pues necesito actualizar solo los productos que esten activos

Analizando el caso

1. quitar el trigger y actualizar manualmente
2. guardar el status en la tabla productos precios y ahi poder hacer la consulta..

bueno esos son los casos que se me ocurren

espero alguien me puede ayudar, dar un tip o un consejo de como puedo le puedo hacer... !!!

bueno muchas gracias de antemano

Att. ISC. manoloss
  #2 (permalink)  
Antiguo 28/04/2009, 16:19
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: sugerencia con trigger

Código sql:
Ver original
  1. UPDATE productos_precios PP INNER JOIN productos P USING(idproductos)
  2. SET precio = 100
  3. WHERE idproductos = 100 AND P.estatus = 'A';
Eso te actualizará la tabla productos_precios en el artículo 100 si está activo.

aquí el secreto está en no complicar las cosas más de lo debido. Si tienes un trigger, recuerda que este no debe invocar a la propia tabla ni a una tabla desde la que se obtengan o hacia la que se inserten o borren datos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 28/04/2009, 18:22
 
Fecha de Ingreso: abril-2009
Mensajes: 17
Antigüedad: 15 años
Puntos: 1
Respuesta: sugerencia con trigger

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Código sql:
Ver original
  1. UPDATE productos_precios PP INNER JOIN productos P USING(idproductos)
  2. SET precio = 100
  3. WHERE idproductos = 100 AND P.estatus = 'A';
Eso te actualizará la tabla productos_precios en el artículo 100 si está activo.

aquí el secreto está en no complicar las cosas más de lo debido. Si tienes un trigger, recuerda que este no debe invocar a la propia tabla ni a una tabla desde la que se obtengan o hacia la que se inserten o borren datos.

Muchas gracias amigo pero asi ya lo habia hecho en realidad asi debe ser para no complicar tanto el update pero de igual forma marca error, el que puse anteriormente solo fue una salida que se me ocurrio pero bueno...

Y pues es vdd lo de las reglas de el trigger, es por eso que puse los dos puntos que se me ocurrian y pues buscaba alguna otra sugerencia.

muchas gracias pero pues seguimos en las mismas

saludos
  #4 (permalink)  
Antiguo 28/04/2009, 18:28
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: sugerencia con trigger

¿Qué error te marca con esa consulta?
El tema es que el trigger debe estar en conflicto con el UPDATE.
Postea el codigo del trigger.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 28/04/2009, 18:57
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Ubicación: El Salvador
Mensajes: 753
Antigüedad: 18 años, 11 meses
Puntos: 4
Respuesta: sugerencia con trigger

opino lo mismo, postea el codigo del trigger para intentar entender mejor el porque del error.
__________________
Con Microaplicaciones puedes hacer tu tienda en línea de forma sencilla y rápida, sin costos ocultos y con mucha responsabilidad.
  #6 (permalink)  
Antiguo 29/04/2009, 12:50
 
Fecha de Ingreso: abril-2009
Mensajes: 17
Antigüedad: 15 años
Puntos: 1
Respuesta: sugerencia con trigger

Cita:
Iniciado por gnzsoloyo Ver Mensaje
¿Qué error te marca con esa consulta?
El tema es que el trigger debe estar en conflicto con el UPDATE.
Postea el codigo del trigger.
Cita:
Iniciado por xcars Ver Mensaje
opino lo mismo, postea el codigo del trigger para intentar entender mejor el porque del error.
Muchas gracias amigos...!!!

ahi esta el trigger

Código:
TRIGGER `AfterUpdateProd_Precios` AFTER UPDATE ON `productos_precios` 
    FOR EACH ROW BEGIN
	UPDATE productos SET Llave = 'ClaveCodificada' WHERE idproductos = NEW.idproductos;
    END;
Este trigger me sirve para que al modificar la tabla de precios se me actualice una llave que encrypta la tabla y ClaveCodificada solo la mando desde el sistema asi que si alguien me modifica desde cualquier otro lado la llave va mal y me corrompe el registro

Ahora al realizar el UPDATE

Código:
      UPDATE productos_precios PP INNER JOIN productos P USING(idproductos)
      SET precio = 100
      WHERE idproductos = 100 AND P.estatus = 'A';
Como el trigger utiliza la tabla productos y en el update consulto esa tabla para poder conocer el status del producto es donde me marca el error...

el codigo de erro es 1442

bueno muchas gracias por su tiempo... y por su ayuda...

estamos en contacto ...

saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:27.