Re: [PHP-ES] que tan confiable es mysql_insert_

[email protected] (hahmael)
Newsgroups php.general.es
Message-ID <[email protected]>
Graciasa a todos, hasta el momento pienso en realizar un bloqueo de tabla
select [campos] from [tabla] for update.. antes de hacer el insert y la
correspondiente recuperación
Combinado con la función mysql_insert_id()...y puntero de conexion... creo
de este modo podría reducir un margen de error, tambien usar ene sta tabla
el motor transaccional innodb.

Denyl gracias por lo de TRY CATCH..lo tendré en cuenta también...





2009/12/18 Denyl Meneses Guillén <[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]> <[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]> <[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.”
>
>


-- 
Agradecido.

Hahmael Tâher.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.