Te estás ahogando en un vaso de agua. Si vas a hacer inserción manual de identificadores te meterás en un problema bastante complicado ya que para eso existen los bloqueos de tabla. En bases de datos con muchos registros comenzarán a duplicarse los identificadores porque mientras que calculas el valor para autoincrementar vendrá otra conexión en paralelo y hará el mismo calculo haciendo que ambos registros guarden el mismo valor provocando que el último no se pueda escribir.
Por eso mysql de manera nativa realiza un bloqueo de tablas para reservar su uso mientras realiza el calculo de autoincremento, a demás de eso cuenta con una pila interna de instrucciones para evitar que peticiones asyncronas obtengan un mismo identificador.
Primero lo primero, todos tus id de todas las tablas deben ser autoincrementables, luego debes tomar el valor máximo y dárselo como subquery, evita en lo posible utilizar variables y procedimientos almacenados.
Si es una base de datos nueva entonces eliminala y vuelvela a crear con las propiedades que corresponden.
Saludos.
Por eso mysql de manera nativa realiza un bloqueo de tablas para reservar su uso mientras realiza el calculo de autoincremento, a demás de eso cuenta con una pila interna de instrucciones para evitar que peticiones asyncronas obtengan un mismo identificador.
Primero lo primero, todos tus id de todas las tablas deben ser autoincrementables, luego debes tomar el valor máximo y dárselo como subquery, evita en lo posible utilizar variables y procedimientos almacenados.
Si es una base de datos nueva entonces eliminala y vuelvela a crear con las propiedades que corresponden.
Saludos.