PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Vệ sinh thông tin đầu vào cho một cột trong postgres

Đầu tiên, hãy cập nhật lên phiên bản PostgreSQL hiện tại. 8.1 đã chết và bị lãng quên từ lâu và không được hỗ trợ và rất, rất cũ .. bạn hiểu ý tôi chứ? Phiên bản hiện tại là PostgreSQL 9.2 .

Sau đó, sử dụng trình kích hoạt thay vì một quy tắc. Nó đơn giản hơn. Đó là cách mà hầu hết mọi người đi. Tôi làm.

Đối với cột col trong bảng tbl ...

Trước tiên, hãy tạo chức năng kích hoạt :

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;

Sau đó, sử dụng nó trong trình kích hoạt .
Đối với Postgres 8.1 cổ đại:

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

Dành cho Postgres ngày nay (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();

Bạn có thể đóng gói nhiều thứ hơn vào một trình kích hoạt, nhưng sau đó bạn không thể điều chỉnh trình kích hoạt CẬP NHẬT chỉ trên một cột ...




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. openerp:lỗi máy chủ nội bộ trên ubuntu

  2. Các quyền PostgreSQL bị hạn chế cho ứng dụng web

  3. LibreOffice Calc thực thi một hàm PostgreSQL

  4. Đặt lược đồ cho tất cả các truy vấn của một kết nối trong psycopg2:Bắt điều kiện chủng tộc khi đặt search_path

  5. Làm thế nào để có được hàng đầu tiên trên mỗi nhóm trong PostgreSQL