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

ON DUPLICATE KEY UPDATE condicional en un INSERT multiple

Estas en el tema de ON DUPLICATE KEY UPDATE condicional en un INSERT multiple en el foro de Mysql en Foros del Web. Necesito insertar cientos de datos en mysql, y por eso uso un INSERT con varios valores separados por coma. Ahora, quiero hacer un UPDATE en ...
  #1 (permalink)  
Antiguo 31/08/2011, 13:09
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 7 meses
Puntos: 101
ON DUPLICATE KEY UPDATE condicional en un INSERT multiple

Necesito insertar cientos de datos en mysql, y por eso uso un INSERT con varios valores separados por coma. Ahora, quiero hacer un UPDATE en caso de que el campo comm_state sea 0.

Vi por ahi que se puede usar IF para definir valores del UPDATE, pero eso no aplica a mi caso. Por otro lado, existe otro IF, que es el que estoy tratando de usar en lo que publico seguidamente, pero nunca lo vi aplicado a un caso así. Será posible lograrlo?

Código MySQL:
Ver original
  1. INSERT INTO Commissions  (client_id, comm_date, comm_amount, comm_payed, commf_id)  
  2. VALUES ( (SELECT client_id FROM Clients WHERE client_CISid = 80400028),2011-8-1,6785.415,0,50),
  3.        ( (SELECT client_id FROM Clients WHERE client_CISid = 80400033),2011-8-1,431.37,0,50),
  4.        ( (SELECT client_id FROM Clients WHERE client_CISid = 80400039),2011-8-1,880.245,0,50),( (SELECT client_id FROM Clients WHERE client_CISid = 80400160),2011-8-1,165.78,0,50),( (SELECT client_id FROM Clients WHERE client_CISid = 80400172),2011-8-1,268.425,0,50)
  5.  
  6.   IF comm_payed = 0 THEN
  7.  
  8.  
  9.   comm_amount = VALUES(comm_amount),  comm_payed = 0,  commf_id = 50  
  10.  
  11.   END IF
  #2 (permalink)  
Antiguo 01/09/2011, 11:24
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 7 meses
Puntos: 101
Respuesta: ON DUPLICATE KEY UPDATE condicional en un INSERT multiple

El condicional me quedo asi:

Código MySQL:
Ver original
  1. comm_amount = IF(comm_payed = 0, VALUES(comm_amount), comm_amount),
  2. commf_id = IF(comm_payed = 0, 5, commf_id)

O sea, actualizo los campos solo si comm_payed = 0. Pero tengo que poner la condicion en todos los campos a actualizar. Y bueno, si la condicion no se cumpliera, se mantendría el valor del campo.

Etiquetas: condicional, duplicate, insert, key, select, sql, update
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 12:46.