Me gustaría configurar una tabla en Postgres para que se comporte como un registro de solo agregar. Esta tabla tendrá un ID principal generado automáticamente.
Los trabajadores trabajarán en los elementos de la tabla en orden y solo deberían almacenar la ID de la última fila que hayan completado.
¿Cómo puedo evitar que se escriban filas en la tabla (quizás porque algunas transacciones toman más tiempo que otras) donde la identificación de la fila es menor que el valor más alto en la tabla?
Excepto que los números asignados son específicos de la sesión, por lo que una sesión que comienza antes pero dura más puede escribir en la tabla con una identificación que es menor que una que comenzó más tarde pero terminó antes. Entonces, o crea su propia generación de secuencias numéricas que implica el bloqueo o usa una marca de tiempo INSERT.
No hay forma de evitar inserciones simultáneas en la tabla (a menos que bloquee la tabla, lo cual es una mala idea, porque interrumpe el autovacío).
Por lo tanto, no hay forma de garantizar que las filas se inserten en un orden determinado. El orden en que se insertan las filas no es realmente un concepto significativo en PostgreSQL.
Si realmente quiere eso, debe usar un mecanismo diferente para serializar las inserciones, por ejemplo, usar bloqueos de aviso de PostgreSQL o mecanismos de sincronización en el lado del cliente.