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

consejo sobre un update.

Estas en el tema de consejo sobre un update. en el foro de Mysql en Foros del Web. hola tengo una tabla usuarios esta tiene un campo dinero, el caso es que tengo que hacer que un usuario le pague un dinero a ...
  #1 (permalink)  
Antiguo 04/11/2010, 11:39
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 8 meses
Puntos: 15
consejo sobre un update.

hola tengo una tabla usuarios esta tiene un campo dinero, el caso es que tengo que hacer que un usuario le pague un dinero a otro , tengo estos update

Código MySQL:
Ver original
  1. UPDATE usuarios set dinero=dinero-500000
  2. WHERE iduFB='1022662906'
  3.  
  4. UPDATE usuarios set dinero=dinero+500000
  5.  WHERE iduFB='1022662905'"

el primero quita el dinero y el otro lo suma, pero quiciera saber si alguna manera de hacerlo mejor o si asi esta bn.?


saludos
  #2 (permalink)  
Antiguo 04/11/2010, 21:47
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 9 meses
Puntos: 96
Respuesta: consejo sobre un update.

Saludos

A mi me parese que asi ya esta bien!.-
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #3 (permalink)  
Antiguo 05/11/2010, 06:34
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: consejo sobre un update.

Opino lo mismo.
Es mas, no se me ocurre otra forma
saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #4 (permalink)  
Antiguo 05/11/2010, 06:56
Avatar de 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: consejo sobre un update.

Creo que estamos todos de acuerdo. No hay muchas más posibilidades, cuando en realidad estás actualizando dos registros distintos y únicos.
__________________
¿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 05/11/2010, 08:27
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 8 meses
Puntos: 15
Respuesta: consejo sobre un update.

Y en caso de que falle alguna de las dos que pordria hacer , digamos que solo le reste el dinero a uno pero que por algun problema no puede sumarle el dinero al otro.?

saludos
  #6 (permalink)  
Antiguo 05/11/2010, 08:30
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: consejo sobre un update.

transacciones rivermillos.

Mira en las faqs un ejemplo de como usarlas.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #7 (permalink)  
Antiguo 05/11/2010, 08:33
Avatar de lucasiramos  
Fecha de Ingreso: agosto-2004
Ubicación: Santa Rosa, La Pampa, Argentina
Mensajes: 1.484
Antigüedad: 20 años, 3 meses
Puntos: 13
Respuesta: consejo sobre un update.

Hola Rivermillos! Con respecto a si surgen problemas en el medio de la actualización, podes chequear cómo realizar transacciones en bases de datos. Fijate por acá, yo las he usado y realmente son muy útiles, sobre todo si hay que realizar varias operaciones en bases de datos en las que puede darse un error antes que termine.

Espero te sirva.
Saludos, Lucas

Edito: Creo que la manera de realizar el update es la más eficiente, y de hecho, como comentaron arriba, no se me ocurre realizarlo de otra manera, jejeje.
  #8 (permalink)  
Antiguo 05/11/2010, 08:45
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 8 meses
Puntos: 15
Respuesta: consejo sobre un update.

hola tengo una duda es lo mismo colocar BEGIN o START TRANSACTION?
y cuando se hace el rollback en caso mio de alguna falla altera toda la BD o solo el UPDATE que no fallo?

saludos
  #9 (permalink)  
Antiguo 05/11/2010, 08:55
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: consejo sobre un update.

Cita:
hola tengo una duda es lo mismo colocar BEGIN o START TRANSACTION?
Es lo mismo. START TRANSACTION es un comando unico de mysql pero en otros DMBS es muy utilizado BEGIN, por lo que mysql también lo tiene como standar.

Cita:
y cuando se hace el rollback en caso mio de alguna falla altera toda la BD o solo el UPDATE que no fallo?
Una transacción tiene vida unicamente en la sesión actual.
si abres 3 consolas de mysql simultaneamente. En una abres una transacción, los cambios no serán vistos en las otras sesiones hasta que hayan sido confirmados (Con commit). Por lo que esto realmente no te altera la base de datos.

Si les vas a dar un uso mas grande y que comprometa muchas tablas, te recomiendo que profundices el tema ya que son varios casos los que te pueden traer problemas. Uno de los mas conocidos es un deadlock cuando una transacción abierta compromete registros que están siendo utilizados por otra transacción. Para brindar consistencia en los datos, cuando mysql detecta un deadlock hace automaticamente rollback de todas las transacciones.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #10 (permalink)  
Antiguo 05/11/2010, 18:08
Avatar de 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: consejo sobre un update.

Según el manual de referencia, corresponde START TRANSACTION, ya que BEGIN es cláusula de inicio de un bloque de sentencias dentro de un stored procedure.
Respecto del uso del BEGIN para las transacciones, el manual dice:
Cita:
BEGIN y BEGIN WORK se soportan como alias para START TRANSACTION para iniciar una transacción. START TRANSACTION es sintaxis SQL estándar y es la forma recomendada para iniciar una transacción ad-hoc . El comando BEGIN difiere del uso de la palabra clave BEGIN que comienza un comando compuesto BEGIN ... END.
Ver
13.4.1. Sintaxis de START TRANSACTION, COMMIT y ROLLBACK
19.2.7. Sentencia compuesta BEGIN ... END
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: consejo, 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 10:47.