PHP - Ejecución ordenada de consultas

 
Vista:

Ejecución ordenada de consultas

Publicado por Antonio Simón (14 intervenciones) el 23/10/2003 18:19:57
Ante todo, muchas gracias por vuestra ayuda e interes. Desconozco si esta nota la he de poner aquí, o en el foro de Oracle, pero como este lo tengo más por mano :) comenzaré por aquí.

El ejemplo:
Dos usuarios A y B, que en un intervalo de, no sé, no llega ni a medio segundo, ejecutan la misma pagina. Esta página, lo que hace es un, y por este orden, un delete de una líneas en una tabla y justo a continuación una inserción de líneas.

El orden que me gustaría que siguiese, sería:
delete.... / insert.... -- usuario A /// / delete... / insert.... -- usuario B
y sin embargo ejecuta:
delete..../ delete.... ---usuarios A y B ///// insert..../ insert..... usuarios A y B
tanto los deletes como los inserts, son sobre las mismas tablas, que ocurre?, pues, que se me duplican las líneas.
Nota: si solo lo ejecuta un usario, sale perfecto, porque lo primero que hace es cargarse todas las líneas y las vuelve a generar.

El porqué lo hago así, es muy largo de contar, pero, ¿a alguno de vosotros se le ocurre, si es posible, alguna manera de ejecutar la primera petición de la página con su delete y su insert, y justo a continuación la segunda petición, con su delete y su insert?
Nota: ambos,a nivel de bbdd. son el mismo usuario.

Muchas gracias por todo y perdonad las molestias
Saludos,
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ejecución ordenada de consultas

Publicado por Mariano Pelizzari (125 intervenciones) el 23/10/2003 19:59:23
lo que podes hacer es setear un flag. Es una variable o campo de base de datos que toma dos valores.
Entonces mientras se hace el delete/insert de un usuario esta variable/campo estaria en false. Cuando se terminaron de ejecutar las transacciones la colocas en true.
Te recomiendo que colques un campo en la base de datos, ya que si lo haces sobre php en forma de variable tendrias que ejecutar sesiones y se haria mucho lio.

De todas formas con lo que estas pidiendo, y si mal no lo interprete, se haria muy lento el acceso a tu pagina ya que una de las ventajas de la web es la cuncurrencia sobre un sitio (es decir muchos al mismo tiempo) y con lo que pedis tendrias que "serializar" dicho acceso. Esto es asi porque mintras hay alguien ingresando no puede haber otro porque las transacciones se mezclan.

Por lo tanto evitalo a mas no poder, a menos que sean pocos los usuarios que accedan

Espero sirva. Cualquier cosa estoy en msn messnger. Slds
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ejecución ordenada de consultas

Publicado por crash (146 intervenciones) el 24/10/2003 09:52:14
para eso se usa el commit ; revisalo (sql)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ejecución ordenada de consultas

Publicado por Mariano Pelizzari (125 intervenciones) el 24/10/2003 13:55:41
El commit no sirve de nada por si solo. Forma parte de las transacciones y si no sabes como definir los diferentes niveles de transacciones te podes llegar a confundir bastante.

No estoy seguro si oracle maneja distinto niveles, se que innodb lo haces. De todas formas, Antonio, la solucion que yo te di fue a nivel de lenguaje de programacion aunque las transacciones tambien te pueden ayudar en lo que vos queres. Tendrias que buscar un buen manual o un foro especifico.

Slds
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar