sql >> Database teknologi >  >> RDS >> PostgreSQL

postgresql - trigger, opdater tidsstempel på feltopdatering

Så længe du kun foretager ændringer i den række, der udløste triggeren, er det langt enklere (og billigere) at bruge en FØR OPDATERING trigger, som kan foretage ændringer i new.complete_flag før det gemmes i tabellen, i stedet for at skulle køre en OPDATERING erklæring, efter at den allerede er derinde.

Du kan også begrænse triggeren til opdateringer af et bestemt felt med OPDATERING AF klausul i OPRET TRIGGER erklæring.

Slutresultatet ville se nogenlunde sådan ud:

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. Hvorfor bruger MySQL ikke et indeks til en større end sammenligning?

  2. CachedRowSet langsommere end ResultSet?

  3. KONTROLLER BEGRÆNSNING af streng for kun at indeholde cifre. (Oracle SQL)

  4. Er forbindelsespooling et must-have i ODP.NET?