Código MySQL:
Ver original
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
| ||||
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 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 |
| ||||
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) |
| ||||
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. |
| ||||
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 |
| ||||
Respuesta: consejo sobre un update. Cita: 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.hola tengo una duda es lo mismo colocar BEGIN o START TRANSACTION? Cita: Una transacción tiene vida unicamente en la sesión actual. y cuando se hace el rollback en caso mio de alguna falla altera toda la BD o solo el UPDATE que no fallo? 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 |
| ||||
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: VerBEGIN 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. 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: |