sql >> Databáze >  >> RDS >> PostgreSQL

postgresql - spoušť, aktualizace časového razítka při aktualizaci pole

Dokud provádíte změny pouze v řádku, který spustil spouštěč, je mnohem jednodušší (a levnější) použít BEFORE UPDATE spouštěč, který může provádět změny new.complete_flag před uložením do tabulky, místo abyste museli spouštět UPDATE prohlášení poté, co tam již je.

Spouštěč můžete také omezit na aktualizace konkrétního pole pomocí UPDATE OF <column> klauzule CREATE TRIGGER prohlášení.

Konečný výsledek by vypadal asi takto:

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. Více aplikací Rails, jedna databáze MySQL

  2. Jak nainstalovat PostgreSQL 12 na Ubuntu 20.04 DigitalOcean

  3. Errcode 13, problém SELECT DO OUTFILE

  4. Laravel 5:Porušení omezení integrity:1452 Nelze přidat nebo aktualizovat podřízený řádek:omezení cizího klíče selže