170 votes

Comment mettre à jour automatiquement un horodatage dans PostgreSQL

Je veux que le code puisse mettre à jour automatiquement l'horodatage lorsqu'une nouvelle ligne est insérée, comme je peux le faire dans MySQL en utilisant CURRENT_TIMESTAMP.

Comment pourrai-je y parvenir dans PostgreSQL ?

 CREATE TABLE users (
    id serial not null,
    firstname varchar(100),
    middlename varchar(100),
    lastname varchar(100),
    email varchar(200),
    timestamp timestamp
)

68voto

Jim Yu Points 86

Mise à jour de l'horodatage, uniquement si les valeurs ont changé

Basé sur le lien d'EJ et ajoutez une instruction if à partir de ce lien ( https://stackoverflow.com/a/3084254/1526023 )

 CREATE OR REPLACE FUNCTION update_modified_column()
RETURNS TRIGGER AS $$
BEGIN
   IF row(NEW.*) IS DISTINCT FROM row(OLD.*) THEN
      NEW.modified = now(); 
      RETURN NEW;
   ELSE
      RETURN OLD;
   END IF;
END;
$$ language 'plpgsql';

11voto

Parichay Mo Points 135

L'utilisation de 'now()' comme valeur par défaut génère automatiquement l'horodatage.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X