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

Insertar o modificar dependiendo de una condición

Estas en el tema de Insertar o modificar dependiendo de una condición en el foro de Mysql en Foros del Web. Me gustaría saber si se puede hacer esto. Digamos que tengo una tabla Tabla1 con dos campos: Codigo y Cantidad y tengo los siguientes registros: ...
  #1 (permalink)  
Antiguo 31/12/2008, 10:46
 
Fecha de Ingreso: octubre-2008
Mensajes: 276
Antigüedad: 15 años, 6 meses
Puntos: 1
Insertar o modificar dependiendo de una condición

Me gustaría saber si se puede hacer esto.

Digamos que tengo una tabla Tabla1 con dos campos: Codigo y Cantidad y tengo los siguientes registros:

+--+--+
|1 |23|
|2 |12|
+--+--+


ahora sumo seis unidades a la cantidad del registro cuyo codigo es dos:

Código:
update Tabla1 set Cantidad = Cantidad + 6 where Codigo = 2;
+--+--+
|1 |23|
|2 |18|
+--+--+


pero si ese registro no existiera, por ejemplo:

+--+--+
|1 |23|
|3 |12|
+--+--+


y hago:

Código:
update Tabla1 set Cantidad = Cantidad + 6 where Codigo = 2;
me daría error. Lo que debería de hacer sería:

Código:
insert into Tabla1 values (2, 6);
Yo quiero generar una sentencia genérica que me sirva tanto si existe ese registro como si no. Algo así como:

Código:
si existe registro entonces
  update Tabla1 set Cantidad = Cantidad + 6 where Codigo = 2
sino
  insert into Tabla1 values (2, 6);
Quiero saber si todo esto se puede hacer bajo código MySQL sin crear funciones, simplemente quiero saber si hay alguna sentencia que tenga en cuenta todo esto.

¿Es posible?

Última edición por letni; 31/12/2008 a las 10:54
  #2 (permalink)  
Antiguo 31/12/2008, 10:49
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Insertar o modificar dependiendo de una condición

Mmm a lo mejor crear un stored procedure, que haga eso, ya que directamente dudo que lo puedas hacer con una sola sentencia.

Saludos.
  #3 (permalink)  
Antiguo 31/12/2008, 10:55
 
Fecha de Ingreso: octubre-2008
Mensajes: 276
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Insertar o modificar dependiendo de una condición

Cita:
Iniciado por GatorV Ver Mensaje
Mmm a lo mejor crear un stored procedure, que haga eso, ya que directamente dudo que lo puedas hacer con una sola sentencia.

Saludos.
Sí, con un stored procedure ya se que se puede hacer pero pregunto que si MySQL viene con alguna sentencia de serie que haga esto.

Saludos.
  #4 (permalink)  
Antiguo 31/12/2008, 10:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Insertar o modificar dependiendo de una condición

Pues pudes usar un IF, pero no dentro de la misma sentencia para hacer un UPDATE y luego un INSERT, por ende se usa el Stored Procedure ya que son varias sentencias dentro del mismo procedimiento.

Saludos.
  #5 (permalink)  
Antiguo 01/01/2009, 11:47
 
Fecha de Ingreso: octubre-2008
Mensajes: 276
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Insertar o modificar dependiendo de una condición

Al final he conseguido esto pero mediante una sentencia llamada replace:

Código:
replace into Tabla1 values (2, 3);
REPLACE funciona exactamente como INSERT, excepto que si una fila antigua tiene el mismo valor para la clave primaria que una nueva entonces la fila antigua es borrada después de que la nueva fila sea insertada.
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 17:31.