web-dev-qa-db-fra.com

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

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

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

Existe-t-il quelque chose de similaire pour faire ce qui précède dans PostgreSQL?

63
bichonfrise74

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 suit:

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