Parece que hay necesidad de una respuesta aquí que elimina las condiciones de carrera, y aborda el problema real de pre-proporcionar identificadores únicos.
Para resolver el problema, usted mantiene un segundo modelo, que sirve identificadores únicos para el modelo primario. De esta manera no tienes ninguna condición de carrera.
Si necesita hacer estas identificaciones seguras, debe hash con SHA256 (o SHA512) y almacenar el hash como una columna indexada en el modelo de identificador cuando se generan.
Luego se pueden asociar y validar cuando se utilizan en el modelo principal. Si no los hasch, todavía los asocias para proporcionar validación.
Voy a publicar un código de ejemplo un poco más tarde.
Esto depende de la base de datos que está utilizando, y si los registros se han eliminado .....EJEMPLO: borre los últimos 1000 registros en una tabla postgresql y haga una inserción. La identificación no es el máximo + 1. En una paradoja DB, el próximo registro podría obtener una identificación anterior, porque la reutiliza. Realmente realmente depende de tu DB. – baash05
Además ... si tiene dos personas conectadas y ambas ingresan productos/compras_ordenes/trabajos/eventos. Esto devolvería la misma identificación para ambos. – baash05
La respuesta simple es que no lo haces así, creas un modelo generador/proveedor de identificación. – ocodo