Duplicidad de registros

Yo tengo una tabla (llamada documentos)en donde guardo un registro con un numero correlativo(osea 1,2,3,4,5..., el cual es llave), para hacer esto yo tengo otra tabla(llamada correlativos )en la cual guardo el ultimo valor de ese numero, entonces al grabar en mi página PHP (Al presionar submit en mi formulario), voy a buscar este numero, y luego con este voy a grabar grabar un nuevo registro en mi tabla documentos, y posterior a eso, le sumo 1 al numero correlativo y lo guardo en la tabla correlativos.
La cuestión es lo siguiente, si dos usuarios se ponen grabar al mismo tiempo en la tabla correlativos, ¿Es posible que graban un documento con el mismo numero correlativo?.
Si eso es posible, hay alguna manera de evitar que pueda suceder ese acontecimiento, porque si se llegan a grabar 2 documentos con el mismo código, me va a marcar error.
¿Si uso un numero auto numérico, puedo evitar lo mencionado anteriormente?. Si es asi, ¿Cómo puedo reiniciar un auto numérico?.
Lo otro que leí, fue que si uno usa una tabla inoDB, el mysql hace algo así como bloqueos de tabla, que podrían evitar lo que mencione anteriormente. Pero no entendí muy bien eso de las tablas InoDB.

2 respuestas

Respuesta
1
Varias respuestas.
1.- MySQL te dará un error si amades dos fichas con el mismo numero siempre que este campo se clave única. Con este error, puede repetir el proceso, de verificación de numero y asignación al formulario, si continua el error, repetir de nuevo. No es una forma de trabajar muy fina paro validad. Si usas este método deberiar de poner un contador para que si te da 10 errores seguido .. aborte el buque pues puede que el error sea otro.
2.- La mejor forma es utilizar un campo autoincremental. Como reiniciar el contador, no lo he hecho nunca pero supongo que reindexando la tabla. Esta es la mejor opción paro lo que estas haciendo)
3.- InoDB es el tipo de indexador que estas utilizando, por defecto se utiliza MyISAM, que esta muy testado pero tiene limitaciones, con este nuevo indesador, puedes realizar transacciones, integridad referencial ... es estable desde a versión 4.01 y se esta contitulendo como indexador de referencia en la nuevas bases de datos realizadas con MySQL.
Respuesta
1
Lo ideal es que utilices una tabla iniDB porque te aseguras de que dos usuarios no puedan usar la tabla al mismo tiempo aunque esto te haría el proceso un poco más lento.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas