107 votes

Mettre à jour l'horodatage lorsque la ligne est mise à jour dans PostgreSQL™

Dans MySQL, nous pouvons exécuter ceci où il met à jour la colonne changetimestamp chaque fois que la ligne est changée :

create table ab (
  id int, 
  changetimestamp timestamp 
    NOT NULL 
    default CURRENT_TIMESTAMP 
    on update CURRENT_TIMESTAMP 
);

Y a-t-il quelque chose de similaire à faire ce qui précède dans PostgreSQL™ ?

148voto

Charles Ma Points 12330

Créez une fonction qui met à jour la colonne changetimestamp d'une table comme ceci :

CREATE OR REPLACE FUNCTION update_changetimestamp_column()
RETURNS TRIGGER AS $$
BEGIN
   NEW.changetimestamp = now(); 
   RETURN NEW;
END;
$$ language 'plpgsql';

Créez un déclencheur sur la table qui appelle la fonction update_changetimestamp_column() chaque fois qu'une mise à jour se produit comme ceci :

    CREATE TRIGGER update_ab_changetimestamp BEFORE UPDATE
    ON ab FOR EACH ROW EXECUTE PROCEDURE 
    update_changetimestamp_column();

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