sql >> Database >  >> RDS >> PostgreSQL

De invoer van een kolom in postgres opschonen

Werk eerst bij naar een huidige versie van PostgreSQL. 8.1 is al lang dood en vergeten en wordt niet ondersteund en heel, heel oud .. begrijp je mijn punt? Huidige versie is PostgreSQL 9.2 .

Gebruik dan een trigger in plaats van een regel. Het is eenvoudiger. Het is de manier waarop de meeste mensen gaan. Ik wel.

Voor kolom col in tabel tbl ...

Maak eerst een triggerfunctie :

CREATE OR REPLACE FUNCTION trg_tbl_insupbef()
  RETURNS trigger AS
$BODY$
BEGIN

NEW.col := f_myfunc(NEW.col);  -- your function here, must return matching type

RETURN NEW;

END;
$BODY$
  LANGUAGE plpgsql VOLATILE;

Gebruik het dan in een trigger .
Voor het oude Postgres 8.1:

CREATE TRIGGER insupbef
  BEFORE INSERT OR UPDATE
  ON tbl
  FOR EACH ROW
  EXECUTE PROCEDURE trg_tbl_insupbef();

Voor moderne Postgres (9.0+)

CREATE TRIGGER insbef
  BEFORE INSERT OR UPDATE OF col  -- only call trigger, if column was updated
  ON tbl
  FOR EACH ROW
  EXECUTE PROCEDURE trg_tbl_insupbef();

Je zou meer dingen in één trigger kunnen stoppen, maar dan kun je de UPDATE-trigger niet op slechts één kolom conditioneren ...




  1. MySQL-query - recente invoer per groep

  2. SQL - Ongeldige id, maar waar?

  3. RESTful Web Services aanroepen vanuit PostgreSQL procedure/functie

  4. Mysql min en max waarden en bijbehorende datum voor elke maand