Re: [PHP-ES] que tan confiable es mysql_insert_
[email protected] (Denyl Meneses Guillén)
| Newsgroups | php.general.es |
|---|---|
| Message-ID | <[email protected]> |
Yo te recomiendo que no trabajes con autoincrement, maneaj tus propios ID, podrias tener una tabla de ID del tipo NOMBRE_TABLA , ID_INI , donde indicas el nombre de tu tabla y el ID de inicio y si deseas uno de fin. cuando obtienes ese ID por db se bloquea el registro asi el siguiente que genere su nuevo ID tiene que esperar a que se termine la transacción. deberias manejar tanbien los TRY CATCH para que guardes en el detale siempre y cuando se haya grabado en la cabecera y tengas el ID , de esta forma no tendras detalles sin cabeceras es decir si bien por DB lo controlas tambien serÃa bueno que lo controles por programa. Para hacerlo mas facil create una clase de correlativos,a si podras utilizar la misma clase para diversas tablas, pero como te digo, yo te recomiendo que no uses autoincrement. Saludos. hahmael wrote: > Si es muy cierto si no estoy mal desde la version cinco. y solo Innodb es > transacional, pero como manejaria esto con PHP?.explico un poco mejor en que > consiste todo.. > > Tengo la siguiente duda, poseo 3 tablas que corresponden a: > ------------------------------------------------------------- > 1. TABLE ORDENES > no_orden INT Primary Key > fecha_ordeb DATETIME > estado_orden VARCHAR > ---------------------------------------------------------------- > 2. TABLE DETALLES ORDENES > id_ordenes INT Primary Key > no_orden INT Foreign key > Cod_producto INT FK > ---------------------------------------------------------------- > 3.TABLE PRODUCTOS > Cod_producto INT PK > name_product VARCHAR > description_product TEXT > Costo_producto DECIMAL > Rank_producto INT > > ----------------------------------------------------------------------- > > La lógica es la siguiente un usuario realiza una orden, con una serie de > productos el usuario envÃa, el sistema genera una No de Orden el cual es un > valor único por lo tanto es una PK en table Ordenes, luego almacena uno a > uno los productos que envÃa en la tabla Detalles la cual cada producto > estará relacionado con su numero de orden correspondiente, por lo tanto una > orden puede tener muchos detalles que realmente son productos ya existentes, > la Duda radica en la generación de ese numero de orden, de que manera podrÃa > generarlo, si dejo un autoincremente en INT estaria bien, pero necesito > tener ese identificativo único al momento de crear para luego poder realizar > el insert de productos de esa orden, pero para ello al momento de realizar > la primera ejecución que es el insert ordenes debo conocer es ID sino no > podre insertas en detalles, esto evitando colisiones o que un usuario tome > un numero de orden que no corresponde. > > Espero alguien pueda entenderme y orientarme, estoy un poco > confundido..espero no sea la cafeÃna. > > 2009/12/18 Mauricio Cuenca <[email protected]> > > >> Recomiendo que hagas una transacción, asà se garantiza la atomicidad de la >> operación. >> >> Ten en cuenta que las transacciones >> solo son soportadas en ciertas versiones de MySQL y usando el motor InnoDB. >> >> -- >> Mauricio >> >> >> On Dec 18, 2009, at 8:12, hahmael <[email protected]> wrote: >> >> La funcion mysql_insert_id.. en una base de datos a la que van a acceder >> >>> multiples clientes sea confiable esta función de PHP..?. >>> >>> con que otras funciones podemos trabajar, para devolver un valor >>> autoincrement desconocido generado despues de un insert, para luego >>> insertarlo en otra tabla, ? >>> >>> -- >>> Agradecido. >>> >>> Hahmael Tâher. >>> >>> > > > -- Denyl Meneses Guillén Dpto. Sistemas GRUPO DELTRON S.A Telf: 415 0101 anexo 1223 Calle Raúl Rebagliati 170 Urb. Santa Catalina - La Victoria ----------------------------------------------------------------- "I know not with what weapons World War III will be fought, but World War IV will be fought with sticks and stones."