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

Update a campo solo si...

Estas en el tema de Update a campo solo si... en el foro de Mysql en Foros del Web. Poseo una duda sobre si realmente es posible lo siguiente. Tengo un Update de los más sencillo. Actualiza dos Campo. El problema es que quiero ...
  #1 (permalink)  
Antiguo 19/12/2008, 20:18
 
Fecha de Ingreso: junio-2008
Mensajes: 71
Antigüedad: 15 años, 10 meses
Puntos: 0
Update a campo solo si...

Poseo una duda sobre si realmente es posible lo siguiente.

Tengo un Update de los más sencillo. Actualiza dos Campo.

El problema es que quiero que me actualice un campo, solo, cuando este cumple una condición.

Hasta ahora lo he resuelto con dos Update :(

Uno muy simple para actualizar un Dato:

Código PHP:
UPDATE tabla
       SET campo1 
'var1'
    
WHERE id 'ID'
LIMIT 1 
y otro casi idéntico, solo que con el Where que comprueba el dato.

Código PHP:
UPDATE tabla
       SET campo2 
'var2'
    
WHERE id 'ID' AND campo2 <= 'dato'
LIMIT 1 
¿será posible matar eso con un solo UPDATE?
  #2 (permalink)  
Antiguo 23/12/2008, 11:14
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años
Puntos: 50
Respuesta: Update a campo solo si...

guiese de esta pagina hagalo con un if o un case

http://www.webadictos.com.mx/2007/06...s-no-conocias/
  #3 (permalink)  
Antiguo 23/12/2008, 12:25
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, 5 meses
Puntos: 2658
Respuesta: Update a campo solo si...

En realidad si se puede, pero si usas LIMIT te dará error, porque LIMIT es cláusula de SELECT, no de UPDATE.
El tema del WHERE del UPDATE pasa porque debe ser univocamente selectivo, ya que de lo contrario, modificará todos los registros donde los datos del predicado coincidan.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 24/12/2008, 08:54
 
Fecha de Ingreso: junio-2008
Mensajes: 71
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Update a campo solo si...

Cita:
Iniciado por helacer Ver Mensaje
guiese de esta pagina hagalo con un if o un case

http://www.webadictos.com.mx/2007/06...s-no-conocias/
Yo en mi caso lo pude arreglar porque lineas más arribas había un SELECT que si "lo estiraba mas allá" podía coger un dato y usarlo luego para construir dinámicamente el UPDATE.

Pero fue que "tuve suerte" en este caso, revisaré eso que me dices a ver y para tenerlo en cuenta para el futuro ya que no siempre tendré la misma suerte que esta vez.

Gracias.

Cita:
Iniciado por gnzsoloyo Ver Mensaje
En realidad si se puede, pero si usas LIMIT te dará error, porque LIMIT es cláusula de SELECT, no de UPDATE.
El tema del WHERE del UPDATE pasa porque debe ser univocamente selectivo, ya que de lo contrario, modificará todos los registros donde los datos del predicado coincidan.
Eso si que no lo sabía, tenía el dogma de usar "siempre" LIMIT ya que de lo contrario, el motor mysql se "iba a quedar revisando hasta el final" el cumplimiento de la condición.

Gracias.

---------------------------------------------

Ahora que me reeleo el post que hice de primero, creo que puede resultar un poco confuso. La situación era la siguiente.

A mi me interesa siempre hacer este update.

Código PHP:
UPDATE tabla
       SET campo1 
'var1'
    
WHERE id 'ID'
LIMIT 1 
Pero resulta, que si también se cumple esta condición campo2 <= 'dato' entonces también debo actualizar este campo campo2 = 'var2'

Por eso es que lo venía resolviendo con dos Update separados.

Última edición por SebasSebas; 24/12/2008 a las 10:26 Razón: Aclarar un poco
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 20:33.