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

Rengør input til en kolonne i postgres

Først skal du opdatere til en aktuel version af PostgreSQL. 8.1 er for længst død og glemt og ikke understøttet og meget, meget gammel .. forstår du min pointe? Nuværende version er PostgreSQL 9.2 .

Brug derefter en trigger i stedet for en regel. Det er mere enkelt. Det er den vej, de fleste går. Det gør jeg.

For kolonne col i tabel tbl ...

Først skal du oprette en triggerfunktion :

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;

Brug det derefter i en trigger .
For det gamle Postgres 8.1:

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

Til 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();

Du kan pakke flere ting i én udløser, men så kan du ikke betinge OPDATERING-udløseren på kun én kolonne ...




  1. Mysql Search Behandl perioder som mellemrum

  2. hvordan man skriver SQL Query i cakephp?

  3. pip-installation MySQL-python fejler på ubuntu 14.04, fejl:kommando 'x86_64-linux-gnu-gcc' mislykkedes med afslutningsstatus 1

  4. Mysql præstationsforespørgsel