Foros del Web » Programando para Internet » PHP »

Transacciones MySQL - PHP

Estas en el tema de Transacciones MySQL - PHP en el foro de PHP en Foros del Web. Buenas, hasta ahora cuando intentaba desarrollar un nivel de seguridad en cunsultas consecutivas a base de datos debia recurrir al JSP, observo que en estas ...
  #1 (permalink)  
Antiguo 09/08/2002, 07:40
Avatar de Necros  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 431
Antigüedad: 15 años, 10 meses
Puntos: 0
Transacciones MySQL - PHP

Buenas, hasta ahora cuando intentaba desarrollar un nivel de seguridad en cunsultas consecutivas a base de datos debia recurrir al JSP, observo que en estas últimas versiones el PHP proporciona herramientas que permiten interactuar con una base de datos a nivel de transacciones, pero como pasa siempre hay mucha info y poco tiempo...

Alguién podría dar un haz de luz con un ejemplo básico de uso de estas funciones ???

Lo que yo busco es en nivel de atomicidad entre varias consultas simultaneas, si una no se cumple,el resto tampoco se llevaran a cabo...

Gracias de antemano...
  #2 (permalink)  
Antiguo 09/08/2002, 10:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Re: Transacciones MySQL - PHP

El tema de transacciones con Mysql .. lo decide Mysql no PHP.

Hasta la version 4.1 de Mysql .. el tema de trasacciones no será todo lo pontente que lo es por ejemplo en BBDD como Oracle, MS SQL server o incluso PostGreSQL ...

El unico soporte de transacciones que hay hasta el momento en Mysql (version 3.23.51, estable a la fecha de hoy) es el definido en la seccion del manual de mysq:

<a href='ir.asp?http://www.mysql.com/doc/en/ANSI_diff_Transactions.html' target='_blank'>http://www.mysql.com/doc/en/ANSI_diff_Tr...</a>

Como veras ahi mismo .. se trata de Bloquear TABLAS ...

De todas formas, la version 4.0 ya soporta bloqueo de Registros (como hacen otros motores de BBDD) .. pero todavia ensta en verion de desarrollo .. (puedes descargarte ya esa version).

mas info sobre Mysql 4.x:
<a href='ir.asp?http://www.mysql.com/products/mysql-4.0/index.html' target='_blank'>http://www.mysql.com/products/mysql-4.0/...</a>

Un saludo,
  #3 (permalink)  
Antiguo 09/08/2002, 13:53
 
Fecha de Ingreso: octubre-2001
Ubicación: Santiago
Mensajes: 42
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Transacciones MySQL - PHP

Lo que puedes hacer también es instalar MysqlMax (<a href='ir.asp?http://www.mysql.com' target='_blank'>http://www.mysql.com...</a>), el que te permite utilizar transacciones en Base de Datos Innodb (<a href='ir.asp?http://www.innodb.com/ibman.html' target='_blank'>http://www.innodb.com/ibman.html...</a>)

Saludos

......




Saludos :)



PHP rlz !!!
  #4 (permalink)  
Antiguo 10/08/2002, 13:12
Avatar de Necros  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 431
Antigüedad: 15 años, 10 meses
Puntos: 0
Re: Transacciones MySQL - PHP

Bolson has dado en el clavo, es precisamente este el que vi código de uso bajo JSP... Bueno, ahora sólo falta probarlo...

Thanks...


By NeCrOS
http://www.necros.com

FrEe WoRlD is FrEE CoDE
-----------------------
  #5 (permalink)  
Antiguo 12/08/2002, 10:49
Avatar de Necros  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 431
Antigüedad: 15 años, 10 meses
Puntos: 0
Re: Transacciones MySQL - PHP

El problema es que incluso para consultas de tipo simple se necesita algo de seguridad en lanzar consultas de tipo atómicas :
Si yo realizo un Insert del que debo obtener el id asignado de forma automatica, quien me
confirma que el id que yo obtengo es el útlimo y no hay otro thread del MySQL que se haya metido por el medio ...

De que forma lo haceis si no utilizais
algun nivel de transacción ??? o sencillamente haceis como yo que me fio de que no pueda pasar nunca...

Gracias de antemano.



By NeCrOS
http://www.necros.com

FrEe WoRlD is FrEE CoDE
-----------------------
  #6 (permalink)  
Antiguo 12/08/2002, 11:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Re: Transacciones MySQL - PHP

No se si acabo de entenderte .. pero te explico como me apaño yo con la integridad referencial y demas ..

Siempre parto de una tabla con identificador unico y autonumerico ..

El &quot;ID&quot; de la tabla padre .. &quot;lo propago&quot; en un campo extra de las sub-tablas ..

ejemplo:

** tabla padre
id (autonumerico, indice .. unico etc)
campos
mascampos
otroscampos

** tabla hija
id (autonumerico, indice etc ...)
id_tabla_padre
campos
mascampos
otroscampos

Mis &quot;inserts&quot; .. son del timpo
INSERT INTO tabla_padre .... VALUE ('',etc ...) // dejo q actue el autonumerico ..

// aqui vendra tal vez tu duda .. si haces un &quot;last insert ID&quot; .. podria existir algun problema con algun &quot;treah&quot; por ahi dando vuelas ...
// Por mi parte .. hasta el momento he usado relaciones de tablas tipo &quot;cuentas&quot; -&gt; perfiles, productos .. etc .. Asi, para estos casos en vez de dar de alta al instante todas las relacines entre tablas (propagando en ID de tabla padre sobre las demas .. ) Lo haga cuando el &quot;usuario de esa cuenta&quot; se identifica por primera vez con lo cual he tenido que obterner su ID original y unico por alguna consulta a otros datos de la tabla padre .. ese ID es el que uso para &quot;propagarlo&quot; y ahi no tengo problemas con &quot;treahs&quot; por ahi ejecutandose que me puedan &quot;falsear&quot; el ID ..

La identificacion del usuario (oseae, hacer la consulta para obtener ese ID atendiendo a condiciones de la tabla y campos .. ) no es necesario que sea &quot;manual&quot; .. puedes guardarte el valor de esa condicion en una variable de session y hacer tu consulta seguidamente con una clausula WHERE campo=datosessio

Este método se que no es lo mas optimizado y será valido para todos los casos .. pero para la mayoria de aplicaciones para la web se suele usar este modelo de datos ..

INSERT INTO tabla_hija ... VALUE ('',id_tabla_padre,etc ...)
y todas mis consultas ... solo una clausula


Basicamente es eso .. si la consulta se complica hay q empezar a usar LEFT JOIN .. ON .. y variantes.

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 05:58.