Ver Mensaje Individual
  #2 (permalink)  
Antiguo 27/05/2009, 05:07
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Duda sobre ID's

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 original
  1. SELECT TABLE_NAME, AUTO_INCREMENT
  2. FROM information_schema.TABLES
  3. WHERE table_schema = 'Nombre de bbdd'

esto te da el proximo autoinc de todas las tablas de una bbdd

si agregas esto

Código sql:
Ver original
  1. AND TABLE_NAME = 'Nombre tabla'

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