Estoy buscando la mejor forma de poder gestionar el siguiente caso.
Tengo una clase Cliente para la que necesito generar una referencia con una longitud prefijada de 9 dígitos, esta referencia debería contener como primeros dígitos el código del Local donde se dio de alta, seguido de ceros y luego un auto incremento relativo al numero de clientes dados de alta en ese local concreto.
Pongo un ejemplo para que se entienda mejor:
Tengo dos locales:
Madrid(cod=1)
Barcelona(cod=2).
Un cliente se da de alta en Madrid y se le asigna el código 100000001
otro se da de alta en Barcelona y se le asigna el código de cliente 2000000001.
Este código debe ser mostrado por pantalla en el formulario de creación de cliente por lo que debe estar disponible antes de insertar el registro en la base de datos, ademas son identificadores que serán públicos y se mostraran y utilizarán por distintas partes del programa y según tengo entendido NO es una buena práctica mostrar claves primarias(Id) de la base de datos a través de la interfaz y que estas sean manejadas por los usuarios, no se hasta que punto esto es verdad o si en este caso si sería aceptable, si alguien pudiera aclarármelo se lo agradecería.
Dado que el auto incremento es relativo al local y que lo necesito antes de haber insertado el registro creo que voy a tener que gestionar de forma manual, buscando cual es el último mediante una consulta SQL e incrementándolo en uno. Y no se si hacer esta consulta directamente a la tabla clientes o mantener en una tabla aparte el último código de cada local que es como lo he estado haciendo hasta ahora siempre que he necesitado algo parecido pero la verdad lo he estado haciendo sin saber si era la mejor manera o si SQL provee una forma mas fácil de manejar este tipo de situaciones y me gustaría saber vuestra opinión y poder aclararme del todo en este asunto.
Un saludo