Jaime Casanova escribió:
2010/3/16 Oswaldo Hernández <lis...@soft-com.es>:
La cuestión es que mis id de registro no son normales, simplificando avanzan
de 100 en 100, entonces en rango se reduce a 42 millones. Esa es la causa de
querer aprovechar ese byte. Lo meditaré a ver que solución tomo.


arriesgandome a parecer tonto, no es mas facil usar una secuencia
normal, ej: 1, 2, 3...
y luego al mostrar o hacer algun proceso raro multiplicarlo por 100?


No, no es para mostrar el valor ni para hacer cálculos con él, se utiliza únicamente cono identificador del registro.

El tema es que hay un sistema de replicación asíncrona por medio. Si utilizara nextval() de la forma habitual me encontraría con el problema que se se generan los mismos id en varios sitios simultáneamente, y al cruzarse los datos tendría problemas.

Simplificando, lo que hago es utilizar los últimos dígitos del id como identificador del sitio donde se crea el registro. Para ello en vez de utilizar nextval() he hecho otra función que al nextval normal le agrega la identificación del site.

De esta forma los id creados en el site 5 se generarán como 105, 205, 305, ... en el site 6 serán 106, 206, 306, ... etc.

Saludos,
--
Oswaldo Hernández
--
TIP 5: �Has le�do nuestro extenso FAQ?
        http://www.postgresql.org/docs/faqs.FAQ.html

Responder a