PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Oczyść dane wejściowe do kolumny w postgres

Najpierw zaktualizuj do aktualnej wersji PostgreSQL. 8.1 jest od dawna martwy i zapomniany, nie jest wspierany i bardzo, bardzo stary .. rozumiesz? Obecna wersja to PostgreSQL 9.2 .

Następnie użyj wyzwalacza zamiast reguły. To prostsze. To jest droga większości ludzi. tak.

Dla kolumny col w tabeli tbl ...

Najpierw utwórz funkcję wyzwalacza :

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;

Następnie użyj go w wyzwalaczu .
Dla starożytnego Postgresa 8.1:

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

Dla współczesnego Postgresa (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();

Możesz spakować więcej rzeczy do jednego wyzwalacza, ale wtedy nie możesz warunkować wyzwalacza UPDATE tylko w jednej kolumnie ...




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. INITCAP() – Konwertuj na litery początkowe w PostgreSQL

  2. Przywróć usunięte rekordy w PostgreSQL

  3. Wstawiaj dane i ustawiaj klucze obce za pomocą Postgres

  4. Zwiększ zakres identyfikatorów ActiveModel do 8 bajtów

  5. ValueError uobsługiwany znak formatu „d” z psycopg2