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

Hàm kích hoạt SQL để CẬP NHẬT đường trung bình hàng ngày khi CHÈN

Bạn có thể thực hiện UPDATE FROM truy vấn lựa chọn của bạn bằng cách sử dụng các phép nối thích hợp trong Trình kích hoạt của bạn.

create or replace function update_sma8() RETURNS TRIGGER AS
$$
 BEGIN

UPDATE daily_ohlc d SET sma8 = s.simple_mov_avg 
FROM
(
 SELECT  sec.cdate,AVG(sec.close)  
   OVER(ORDER BY sec.cdate ROWS BETWEEN 7 PRECEDING AND CURRENT ROW) AS 
    simple_mov_avg FROM daily_ohlc sec
)s where s.cdate = NEW.cdate  --The newly inserted cdate
     AND d.cdate = s.cdate;   
RETURN NULL;

END $$ language plpgsql;

Demo

Cảnh báo duy nhất khi sử dụng phương pháp này là nếu ai đó xóa một hàng hoặc cập nhật close thì các giá trị phải được tính toán lại, điều này sẽ không xảy ra đối với các hàng hiện có. Chỉ hàng được chèn mới thấy giá trị được tính lại phù hợp.

Thay vào đó, bạn có thể chỉ cần tạo View để tính toán sma8 từ bảng chính cho tất cả các hàng khi được yêu cầu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tham gia truy vấn chỉ với các cột có tất cả các giá trị trong mệnh đề `in`

  2. Làm thế nào để đặt psql trên đường dẫn khi sử dụng Postgres.app trên OS X?

  3. Các tuần giữa hai ngày

  4. Cập nhật Bản ghi Hoạt động Tất cả Trường JSON

  5. Lượt xem danh sách PostgreSQL