Foros del Web » Programando para Internet » PHP »

Múltiples UPDATES "a la vez"

Estas en el tema de Múltiples UPDATES "a la vez" en el foro de PHP en Foros del Web. Buenas tardes a todos, y felíz año nuevo. Tengo un script que me va metiendo en un array updates y en otro errores si hubiese. ...
  #1 (permalink)  
Antiguo 02/01/2013, 10:01
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
Múltiples UPDATES "a la vez"

Buenas tardes a todos, y felíz año nuevo.

Tengo un script que me va metiendo en un array updates y en otro errores si hubiese. En caso de no existir error alguno se ejecuta el array que contiene los updates.

El tema es que son bastantes. Me pregunto si hay diferencia entre ejecutar los updates así:
'UPDATE albarail SET dto=56.01, dtoextra=56.01 WHERE claalbil=108953';
'UPDATE albarai SET clatar=0 WHERE claalbi=21431'

Separados con ; en un único query o eso no influye para nada. También me preguntaba si uno de los UPDATE es incorrecto que pasaría.
a) No se ejecuta ningún update
b) Se ejecuta hasta el que contiene el error
c) Se ejecutan todos menos los del error
  #2 (permalink)  
Antiguo 02/01/2013, 10:05
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: Múltiples UPDATES "a la vez"

estas usando MySqli o PDO o el común que es mysql_query ?

Ejecutara las instrucciones hasta que encuentre un error.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #3 (permalink)  
Antiguo 02/01/2013, 10:08
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Múltiples UPDATES "a la vez"

Claro que se puede, solo que no haz indicado que estás usando para conectarte a la base de datos. Pero te dejo una referencia de como lograrlo con PDO http://stackoverflow.com/questions/6...answers-header Con esto puedes usarlo de referencia para lograrlo con el que estés usando.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #4 (permalink)  
Antiguo 02/01/2013, 10:22
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
Respuesta: Múltiples UPDATES "a la vez"

Perdón! Crasso error.

Utilizo ODBC.
No se si con un simple
Código PHP:
Ver original
  1. odbc_exec("'UPDATE albarail SET dto=56.01, dtoextra=56.01 WHERE claalbil=108953'; 'UPDATE albarai SET clatar=0 WHERE claalbi=21431')
funcionaría.

Ahora me pongo a ello a ver que pasa. Sabeis si el rendimiento es mejor que lanzar individualmente múltiples odbc_exec?

La verdad es que PDO todavía no lo he utilizado. Me gustaría utilizarlo en lugar del ODBC que trae php pero lo cierto es que no consigo conectarme a la BD desde PDO, lo he intentado múltiples veces y no hay manera.

Con odbc simplemente pongo:
odbc_connect ("nombre_obdc", "", "") or die (exit ("Imposible conectar")
con PDO me pide que ponga el driver o algo así pero no se de donde sacar ese "texto". Utilizo DBase.
  #5 (permalink)  
Antiguo 02/01/2013, 10:23
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Múltiples UPDATES "a la vez"

Usa una transacción, es lo mejor, así puedes usar tus UPDATEs y hacer el COMMIT respectivo al final y así garantizas que se ejecutaron todos.

EDIT: Revisa si DBase te da soporte para transacciones, en caso contrario pues vas a tener que crear tú mismo mecanismos de seguridad para garantizar que tus updates son los correctos.
  #6 (permalink)  
Antiguo 02/01/2013, 10:29
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
Respuesta: Múltiples UPDATES "a la vez"

Según tengo leído no admite transacciones. En realidad DBase son unos ficheros de texto, no hay un servidor de bases de datos. Bueno ahora con el ODBC si claro.

DBF files are a simple datastore - they are just random access files with associated index files. There is no process or control file to control locking and rollbacks which would be needed to allow transactions.

If you need transactions you will have to change your file store.


Las transacciones son algo así como los "prepare" de MySQLi no? Hasta que no comprueba que es correcta no la ejecuta o algo así. Nunca lo he hecho.

Con los mecanismos de seguridad te refieres a verificar si todos los UPDATE son correctos? En principio deberían serlos siempre ya que los genero con programación y siempre van "planchados". Si faltan datos no se crean los UPDATE.

Básicamente es un CSV que importo y actualiza campos de la base de datos. Pero si que si se diese el caso de que da un error en mitad del proceso sería bastante preocupante.
  #7 (permalink)  
Antiguo 02/01/2013, 10:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Múltiples UPDATES "a la vez"

No, las transacciones precisamente te permiten controlar tus queries para que se ejecuten todos, así si hay un error hace un "rollback" es decir, o todos o ninguno.

Si DBase no lo soporta, vas a tener que idear un mecanismo de detección, donde si hay un error, sepas en que query fue y puedas entonces ejecutar algún update para regresar todo a como estaba antes de, es una tarea complicada.

Si ejecutas todos tus updates separados por ; solamente sabrás si se ejecutaron o no, pero no vas a tener el control de saber cual fue el update que fallo.
  #8 (permalink)  
Antiguo 02/01/2013, 10:44
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
Respuesta: Múltiples UPDATES "a la vez"

Gracias por los consejos

Etiquetas: 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 06:10.