PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Bereinigen Sie die Eingabe in eine Spalte in Postgres

Aktualisieren Sie zunächst auf eine aktuelle Version von PostgreSQL. 8.1 ist längst tot und vergessen und wird nicht mehr unterstützt und ist sehr, sehr alt. Verstehst du, was ich meine? Aktuelle Version ist PostgreSQL 9.2 .

Verwenden Sie dann einen Trigger statt Regel. Es ist einfacher. So gehen die meisten Menschen. Das tue ich.

Für Spalte col in der Tabelle tbl ...

Erstellen Sie zunächst eine Trigger-Funktion :

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;

Verwenden Sie es dann in einem Trigger .
Für altes Postgres 8.1:

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

Für modernes 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();

Sie könnten mehr Zeug in einen Trigger packen, aber dann können Sie den UPDATE-Trigger nicht auf nur eine Spalte konditionieren ...