Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

138
Vistas
uso de activadores para secuenciar y actualizar las marcas de tiempo en Postgres

Estoy tratando de marcar la fecha y la versión de las filas en una tabla a medida que se actualizan. Tengo el siguiente tigre:

 CREATE OR REPLACE FUNCTION trigger_set_timestamp() RETURNS TRIGGER AS $$ BEGIN NEW.updated_at = NOW(); NEW.version = OLD.version + 1; RETURN NEW; END; $$ LANGUAGE plpgsql;

Que agrego a mi tabla así:

 CREATE TRIGGER exchange_order_trigger_1 BEFORE UPDATE ON exchange_order FOR EACH ROW EXECUTE PROCEDURE trigger_set_timestamp();

Tengo un segundo disparador que usa PERFORM pg_notify('table_watch', textPayload); para notificar a mi aplicación nodejs de cada cambio enviándolo a la fila como una cadena json. La aplicación nodejs simplemente registra cada fila en la consola.

Pensé que funcionaba perfectamente, pero noté que las marcas de tiempo y el número de versión no aumentan al mismo tiempo. Aquí hay un ejemplo de la salida (en el orden en que se recibieron):

 "updated_at":"2020-07-16T06:43:40.234227+00:00","version":1 "updated_at":"2020-07-16T06:43:41.170334+00:00","version":2 "updated_at":"2020-07-16T06:43:50.930157+00:00","version":3 "updated_at":"2020-07-16T06:43:46.528429+00:00","version":4 "updated_at":"2020-07-16T06:43:51.717432+00:00","version":5 "updated_at":"2020-07-16T06:43:48.300129+00:00","version":6 "updated_at":"2020-07-16T06:43:53.103254+00:00","version":7

Como puede ver, los números de versión aumentan como se esperaba, pero las marcas de tiempo no. La marca de tiempo de la versión 4 es anterior a la marca de tiempo de la versión 3, por ejemplo.

Cuando miro los otros datos en las filas, parece que el valor updated_at es el correcto y la versión es incorrecta.

¿Qué he hecho mal? Cualquier ayuda muy apreciada.

Uso de una instancia alojada en la plataforma de Google Cloud de Postgres 9.6

over 4 years ago · Santiago Trujillo
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda