PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Sanitasi input ke kolom di postgres

Pertama, perbarui ke versi PostgreSQL saat ini. 8.1 sudah lama mati dan dilupakan dan tidak didukung dan sangat, sangat tua .. Anda mengerti maksud saya? Versi saat ini adalah PostgreSQL 9.2 .

Kemudian, gunakan pemicu bukannya aturan. Ini lebih sederhana. Ini adalah cara kebanyakan orang pergi. Saya tahu.

Untuk kolom col dalam tabel tbl ...

Pertama, buat fungsi pemicu :

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;

Kemudian gunakan dalam pemicu .
Untuk Postgres 8.1 kuno:

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

Untuk Postgres modern (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();

Anda dapat mengemas lebih banyak barang ke dalam satu pemicu, tetapi kemudian Anda tidak dapat mengkondisikan pemicu UPDATE hanya pada satu kolom ...




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mewakili Tanggal, Waktu, dan Interval di PostgreSQL

  2. Bagaimana cara menggunakan operator APAPUN Postgresql dalam pernyataan NOT IN?

  3. Apakah lebih baik menggunakan tabel daripada tipe bidang array di PostgreSql ketika array tidak melebihi 50 elemen?

  4. Periksa apakah Postgresql mendengarkan

  5. Cara membuat ubin OSM