PHP - Bloquear tabla mientras consulto

 
Vista:

Bloquear tabla mientras consulto

Publicado por compuax (3 intervenciones) el 11/06/2018 20:25:49
Tengo una aplicacion en php con mysql en la cual genero un folio consecutivo, para conseguir esto basciamente lo que realizo es consultar en mi tabla de folios el ultimo y le sumo uno mas y listo ,

El problema ahora es que cuando opera mas de un usuario en algunos casos coincide que al mismo tiempo se realiza la consulta y a los dos usuarios les asigna el mismo folio , ya intente con LOCK TABLE pero no consigo solucionarlo, agradeceria mucho una mano, 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
sin imagen de perfil
Val: 127
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Bloquear tabla mientras consulto

Publicado por Rrazo (55 intervenciones) el 11/06/2018 21:21:17
Porque mejor no haces un campo que sea ID autoincrementable y el folio lo asignas en base a eso, por ejemplo puedes tener un prefijo y agregarle el ID, si bloqueas la tabla puedes truncar alguna instrucción importante.

Por ejemplo tienes un prefijo llamado mifolio entonces,,,, concat(MiFolio,ID)


Si lo que quieres hacer de todas formas es preguntar antes de insertar entonces lo que se me ocurre es que puedas crear algun ciclo,

select ultimo_numero
insert into xx value ultimo_numero + 1
si mylqli_affected_row = 1 entonces salte de ciclo, de lo contrario intenta nuevamente

Hay varias formas
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

Bloquear tabla mientras consulto

Publicado por compuax (3 intervenciones) el 12/06/2018 01:10:53
El detalle que encontre con autoincrementable es que debo guardar varios registros con un mismo folio son varios articulos correspondientes a un numero de folio de cotizacion
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
sin imagen de perfil
Val: 127
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Bloquear tabla mientras consulto

Publicado por Rrazo (55 intervenciones) el 12/06/2018 02:50:19
Creo que sería la misma situación, si utilizas autoincrementable, una vez insertas el folio principal, asignas ese folio a tus productos,,, pero igual te queda la segunda opción que te comenté-
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
sin imagen de perfil
Val: 100
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Bloquear tabla mientras consulto

Publicado por Juan (43 intervenciones) el 12/06/2018 23:18:09
Buenas compuax

Has pensado en usar las transacciones que te permite hacer casi todos los SGBD?

Un saludo
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