您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

SQL触发功能可在插入时更新每日移动平均值

SQL触发功能可在插入时更新每日移动平均值

您可以UPDATE FROM在触发器中使用适当的联接来进行选择查询

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;

使用此方法的唯一警告是,如果有人 行或 close列,则必须重新计算值,而对于现有行则不会发生。只有插入的行会看到正确的重新计算值。

取而代之的是,您可以简单地创建View以在需要时sma8从主表为所有行计算列。

SQLServer 2022/1/1 18:43:46 有459人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶