Tengo un proyecto de mascota SaaS para la facturación. En él, quiero que mis clientes empiecen con el número de ticket 1001. Claramente, no puedo usar un campo automático simple en Postgres y simplemente agregar 1000 al valor, porque todos mis clientes compartirán la misma base de datos y la misma tabla tickets
.. He intentado usar un tipo de columna entera y consultar (pseudo SQL) SELECT LATEST number FROM tickets WHERE client_id = [current client ID]
para obtener el último número y luego usar ese número + 1
para obtener el siguiente number
. El problema es que con la concurrencia, es muy posible que dos boletos terminen con el mismo número de esta manera. el número que necesito para poder hacer esto dentro de Django o con SQL en bruto (frente a usar Bash o cualquier otra cosa del género).¿Cuál es la forma correcta de secuenciar manualmente una columna en Postgres?
No estoy buscando una manera de forzar a mi ejemplo a trabajar. Solo estoy buscando una solución para mi problema de necesitar aumentar de forma independiente los números de ticket para cada cliente.
Posible engaño: http://stackoverflow.com/questions/6046085/postgresql-sequence-that-ensure-a-unique-id –
No es un duplicado porque eso busca un número único. El mío está buscando el siguiente número en secuencia con respecto a otro campo (el campo del cliente). De hecho, el mío afirma que no puedo usar un campo automático (es decir, serial). – orokusaki
Tengo, entiendo ahora. Afortunadamente mi respuesta funciona para usted (o, mejor aún, alguien más tiene algo más elegante). –