sql >> Database >  >> RDS >> PostgreSQL

postgresql - trigger, update tijdstempel op veldupdate

Zolang u alleen wijzigingen aanbrengt in de rij die de trigger heeft geactiveerd, is het veel eenvoudiger (en goedkoper) om een ​​BEFORE UPDATE te gebruiken trigger, die wijzigingen kan aanbrengen in new.complete_flag voordat het in de tabel wordt opgeslagen, in plaats van een UPDATE . uit te voeren statement nadat het er al in staat.

U kunt de trigger ook beperken tot updates van een bepaald veld met de UPDATE OF <column> clausule van de CREATE TRIGGER verklaring.

Het eindresultaat ziet er ongeveer zo uit:

CREATE FUNCTION completed_timestamp() RETURNS trigger AS $$
   LANGUAGE plpgsql
BEGIN
  IF new.complete_flag = 1 and old.completed_flag = 0 THEN
    new.complete_time := current_timestamp;
  END IF;
  RETURN new;
END;
$$;

CREATE TRIGGER update_timestamp
BEFORE UPDATE OF completed_flag ON tbl_pXXXX
FOR EACH ROW 
EXECUTE PROCEDURE completed_timestamp();



  1. LAAD DATA INFILE slechts 1 record ingevoegd

  2. Genereer broodkruimels van categorieën die zijn opgeslagen in MySQL

  3. Hoe kan ik niet-ondersteunde niet-ondertekende integer-veldtypen in MS SQL omzeilen?

  4. Hoe kan ik mysqli voorbereide statements in PHP abstraheren?