Si, las tres consultas que estas haciendo pueden generar problemas de concurrencia si tienes mas de un usuario al mismo tiempo, puesto que son consultas que para el motor son totalmente independientes, debes definirlas como una unica transacción para que se produzcan los bloqueos necesarios.
Busca en el manual el tratamiento de "
TRANSACCIONES" solo podràs usarlo en tablas tipo
imnodb.
El sistema de ID que usas, es ingenioso, pero tienes el tipo de datos autoincremental que soluciona todo el proceso que para ti son tres consultas (UPDATE, SELECT y INSERT) con una sola (INSERT), en php,
no se si es lo que usas, a demas tines la funcion mysql_insert_id() que te dara el id introducido por el ultimo insert... No veo que justificacion puedes tener para una estructura de este tipo... ten en cuenta que tienes los metadatos de la bbdd que tambien te pueden decir el siguiente id de las tabla con id auto incrementales...
Código sql:
Ver originalSELECT TABLE_NAME, AUTO_INCREMENT
FROM information_schema.TABLES
WHERE table_schema = 'Nombre de bbdd'
esto te da el proximo autoinc de todas las tablas de una bbdd
si agregas esto
sabras el de una tabla concreta. Si le restas 1 tendrás el último. Por lo que tu tabla de contadores no tendria sentido, el propio motor ya crea una...
Quim