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

postgresql - kích hoạt, cập nhật dấu thời gian trên cập nhật trường

Miễn là bạn chỉ thực hiện các thay đổi đối với hàng đã kích hoạt trình kích hoạt, thì việc sử dụng BEFORE UPDATE sẽ đơn giản hơn nhiều (và rẻ hơn) trình kích hoạt, có thể thực hiện thay đổi đối với new.complete_flag trước khi nó được lưu vào bảng, thay vì phải chạy UPDATE tuyên bố sau khi nó đã ở đó.

Bạn cũng có thể giới hạn trình kích hoạt đối với các bản cập nhật của một trường cụ thể với UPDATE OF <column> điều khoản của CREATE TRIGGER tuyên bố.

Kết quả cuối cùng sẽ giống như sau:

CREATE FUNCTION completed_timestamp() RETURNS trigger AS $$
   LANGUAGE plpgsql
BEGIN
  IF new.complete_flag = 1 and old.completed_flag = 0 THEN
    new.complete_time := current_timestamp;
  END IF;
  RETURN new;
END;
$$;

CREATE TRIGGER update_timestamp
BEFORE UPDATE OF completed_flag ON tbl_pXXXX
FOR EACH ROW 
EXECUTE PROCEDURE completed_timestamp();



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tạo một ứng dụng nhiều người thuê bằng các lược đồ và Rails của PostgreSQL

  2. Cách Acos () hoạt động trong PostgreSQL

  3. Trình kích hoạt chung để hạn chế số lần chèn dựa trên số lượng

  4. Kết nối với PostgreSQL trong IRI Workbench

  5. Giải pháp Ruby chung cho SQLite3 LIKE hoặc PostgreSQL ILIKE?