sql >> Databasteknik >  >> RDS >> PostgreSQL

postgresql - trigger, uppdatera tidsstämpel vid fältuppdatering

Så länge du bara gör ändringar i raden som aktiverade utlösaren, är det mycket enklare (och billigare) att använda en INNAN UPPDATERING trigger, som kan göra ändringar i new.complete_flag innan det sparas i tabellen, istället för att behöva köra en UPPDATERING uttalande efter att det redan finns där.

Du kan också begränsa triggern till uppdateringar av ett visst fält med UPPDATERING AV klausul i SKAPA TRIGGER uttalande.

Slutresultatet skulle se ut ungefär så här:

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. Tillåt inte NULL-parametrar för lagrade procedurer i MySQL/MariaDB

  2. Sortera poster från Oracle med flera decimaler (.)

  3. Vad är AWS RDS

  4. Hitta aktuella lediga jobb för Oracle Forms &Reports