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

Trình kích hoạt chèn postgresql để đặt giá trị

Bạn đúng là bạn cần một trình kích hoạt, bởi vì việc đặt giá trị mặc định cho cột sẽ không hoạt động với bạn - các giá trị mặc định chỉ hoạt động cho null và không giúp bạn trong việc ngăn chặn các giá trị trống.

Trong postgres, có một số bước để tạo trình kích hoạt:

Bước 1:Tạo một hàm trả về loại trigger :

CREATE FUNCTION my_trigger_function()
RETURNS trigger AS $$
BEGIN
  IF NEW.C1 IS NULL OR NEW.C1 = '' THEN
    NEW.C1 := 'X';
  END IF;
  RETURN NEW;
END;
$$ LANGUAGE plpgsql

Bước 2:Tạo trình kích hoạt kích hoạt trước đó insert, cho phép bạn thay đổi các giá trị khi chúng được chèn, gọi hàm trên:

CREATE TRIGGER my_trigger
BEFORE INSERT ON T
FOR EACH ROW
EXECUTE PROCEDURE my_trigger_function()

Và bạn đã hoàn tất.

Xem đoạn mã trên đang thực thi trên SQLFIddle chứng tỏ nó hoạt động chính xác!

Bạn đề cập trong một nhận xét rằng giá trị 'X' được truy xuất từ ​​một truy vấn con. Nếu vậy, hãy thay đổi dòng có liên quan như sau:

NEW.C1 := (select some_column from some_table where some_condition);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thực hiện truy vấn hàng giờ hoạt động này trong PostgreSQL

  2. Tham gia bốn bảng liên quan đến THAM GIA TRÁI mà không có bản sao

  3. Hàm xóa dấu trong postgreSQL

  4. PostgreSQL Meltdown Benchmarks

  5. PostgreSQL trả về một hàm với Kiểu dữ liệu tùy chỉnh