Autor Tema: Transacciones en Postgres y las funciones para obtener Timestamps  (Leído 1457 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Tomas Delvechio

  • Toba
  • *
  • Mensajes: 110
    • Ver Perfil
    • Email
  • Institución: Universidad Nacional de Luján
  • Nombre y apellido: Tomas Delvechio
  • Sistema: SIU-Toba
  • Teléfono laboral: 0232315544926
Transacciones en Postgres y las funciones para obtener Timestamps
« on: Septiembre 25, 2015, 10:02:23 am »
Hola, encontré este post[1] sobre algunos problemas que pueden surgir en un contexto de transacciones en Postgres usando marcas de tiempo.

Básicamente explica que al encontrar que muchos frameworks usan un esquema de triggers para mantener una base de datos de auditoria (Como Toba viene haciendo de hace rato), usando la función now() o current_timestamp (Que son semanticamente equivalentes en postgres[2]), el timestamp devuelto es de cuando se ejecuto la sentence "START TRANSACTION".

Este comportamiento puede generar inconsistencia en las tablas de auditoria, haciendo que un evento B ocurrido después de otro A, tenga un timestamp anterior. Mirando un poco triggers de las tablas de auditoria, me pareció encontrar que en toba se utiliza current_timestamp. Si esto no es así, disculpen.

La sugerencia en los comments del post[1] es que se utilice la función clock_timestamp() en lugar de now() o current_timestamp.

Me pareció interesante dejarlo como sugerencia para ser testeado y probado, y en caso de existir el problema, pueda ser modificado para futuras versiones de Toba.

[1]: http://blog.thefourthparty.com/stopping-time-in-postgresql/
[2]: http://www.postgresql.org/docs/8.1/static/functions-datetime.html

richard

  • Moderador Global
  • *****
  • Mensajes: 3045
    • Ver Perfil
  • Institución: SIU
  • Nombre y apellido: Ricardo Dalinger
  • Sistema: SIU-Toba
Re:Transacciones en Postgres y las funciones para obtener Timestamps
« Respuesta #1 on: Octubre 01, 2015, 11:57:59 am »
Hola Tomas,

gracias por traer a colacion esto, voy a modificar la funcion que genera los triggers asi se usa la nueva manera que es mas precisa.
Igual va a requerir que se regenere el esquema de auditoria para que tenga efecto.

Saludos ;)
Twitter es al incontinente verbal,  lo que los dulces al diabetico.