Alguién podría dar un haz de luz con un ejemplo básico de uso de estas funciones ???
![ojotes](http://static.forosdelweb.com/fdwtheme/images/smilies/ojotes.png)
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...
| |||
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, |
| |||
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 !!! |
| ||||
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 ----------------------- |
| ||||
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 ![]() Gracias de antemano. By NeCrOS http://www.necros.com FrEe WoRlD is FrEE CoDE ----------------------- |
| |||
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 "ID" de la tabla padre .. "lo propago" 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 "inserts" .. son del timpo INSERT INTO tabla_padre .... VALUE ('',etc ...) // dejo q actue el autonumerico .. // aqui vendra tal vez tu duda .. si haces un "last insert ID" .. podria existir algun problema con algun "treah" por ahi dando vuelas ... // Por mi parte .. hasta el momento he usado relaciones de tablas tipo "cuentas" -> 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 "usuario de esa cuenta" 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 "propagarlo" y ahi no tengo problemas con "treahs" por ahi ejecutandose que me puedan "falsear" 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 "manual" .. 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. |