Saludos amigos.
Tengo una tabla en donde registro ventas, en dicha tabla debo registrar entre otros datos el numero correlativo de la venta en el día.
Tengo una tabla auxiliar o temporal en donde registro el numero correlativo actual. Cuando se va a insertar una nueva venta consulto esta tabla y obtengo el numero correlativo actual, hago la insercion y despues incremento en 1 el valor del numero correlativo de la tabla auxiliar mediante un UPDATE.
//consulta de numero correlativo
$sql="select numero from tablatemporal where fecha='$fecha'";
$rs=mysql_query($sql);
$reg=mysql_fetch_array($rs);
//insercion de venta
$sql2="insert into venta values ('$_POST[idventa]','$_POST[idcliente]','$fecha','$reg[numero]')";
$rs=consulta($sql2);
$numeroped=$reg[numero]+1;
//actualizando tabla temporal
$sqlupdnt="update tablatemporal set numero='$numeroped' where fecha='$fecha'";
$rsupdnt=mysql_query($sqlupdnt);
El problema es el siguiente: hay muchos terminales registrando ventas en paralelo y han habido ocasiones en que dos ventas (consecutivas) se han registrado con el mismo numero correlativo, y esto se da debido a que casi en simultaneo se ordena el registro de 2 o mas ventas realizando cada una de ellas las consultas mostradas anteriormente.
Existe alguna forma de evitar que, para este caso, ante una concurrencia simultanea de consultas se registren 2 ventas con el mismo numero correlativo ????. (Talvez triggers, lock table, etc).
Gracias de antemano.