|
Respecto a la integridad referencial... me has creado otra duda! Supongo que eso sí que lo hace por mí MySQL! Capturar el posible error que comentas en este sentido es simplemente capturar y manejar una SQLException, no? Eso sí que lo tengo hecho así!
Realmente mi duda iba más por lo de SHOW TABLE STATUS LIKE 'operacion', que utilizo para conocer el valor del autoincrement que tendrá la sentencia INSERT que va inmediatamente después. Imagínate 2 usuarios que a la vez van a insertar una operación. El primero obtiene un valor del SHOW... de 126, el segundo obtiene un valor también de 126 (supongo yo) porque aún el primero no ha insertado!, el primero inserta con un valor de autoincrement de 126, pero el segundo lo haría con un valor de 127 y ahí ya tendría yo un error lógico!, porque en las variables en las que guardé los valores de SHOW... tengo para ambos usuarios 126! Otra cosa es que el segundo trate de insertar también con valor de 126, que no sé si realmente sucedería así, y tendríamos el problema de integridad referencial que tú dices, y supongo que se lanzaría una SQLException que mi código sí capturaría, pero el problema que te planteo yo es el otro.
De todos modos he estado mirando en la red y he visto last_insert_id(). Ya me planteé usar esto en su momento para obtener el identificador de operación asignado por autoincrement tras el INSERT, y no sé por qué lo desestimé y acabé usando el SHOW TABLE..., pero lo he estado mirando de nuevo y, aparte de no encontrarle ahora la desventaja que le vi entonces, resuelve mi problema. Si dos usuarios van a insertar a la vez, primero inserta uno, luego el otro, se obtiene el last_insert_id() para el primero, y luego para el segundo. En este caso ambos last_insert_id() son distintos porque he leído que son particulares de cada conexión. En principio esto resolvería mi problema (salvo que le encuentre otra pega), pero me gustaría saber si estoy acertado en lo que te he comentado, y si el error de integridad referencial es capturado con la SQLException
Muchas gracias por tu ayuda
|