Hola.
La consulta para ver y guardar el nuevo ID en la tabla correspondiente, tendría que ir en una transacción independiente. De forma que el nuevo valor estuviese confirmado nada más crearlo, y disponible para ser consultado por las otras conexiones. (Además seria aconsejable aumentar el nivel de aislamiento de esa transacción a
Lecturas repetibles). De esta forma evitarás la duplicación de códigos.
Aunque usualmente, se suelen utilizar generadores para crear los códigos ID. Un generador es un objeto en la base de datos que va proporcionando códigos consecutivos. Si te instalas IB-Expert,
http://www.hksoftware.net/download/i...4.1.1_full.exe además de ser un Administrador de Datos muy bueno, te permite crear el generador y un procedimiento almacenado para consultarlo, en el momento de crear el campo ID (mira las opciones de Autoincremento).
De forma que creas el generador y un procedimiento almacenado, al crear el campo ID. Y en el programa, en lugar de consultar tu tabla de IDs, ejecutas el procedimiento almacenado para averiguar el nuevo código.
Saludos.