sql >> Base de Datos >  >> RDS >> PostgreSQL

Establecer marca de tiempo dentro de la transacción

Este tipo de pregunta aparece de vez en cuando; por lo que puedo decir, la única forma completamente confiable es hacer lo que ha descrito, almacenar ID actualizados en alguna tabla en el primer proceso y marcarlos como procesados ​​en el segundo. Básicamente, esto es reinventar una cola de mensajes en la base de datos. Ha descrito bastante bien cómo una solución ingenua perderá actualizaciones.

Hacer que el proceso de importación marque las filas actualizadas se puede hacer con bastante facilidad, o incluso implementarse mediante activadores en su tabla de datos. Si solo tiene un proceso de consumidor, entonces todo lo que tiene que hacer es delete from updated_item returning item_id para obtener una lista de actualizaciones. Parece que es mucho más complicado, pero en mi humilde opinión no lo es, en realidad. También aparecen de forma gratuita características como la posibilidad de controlar el tamaño de la cartera de pedidos.