Oracle11g 甲骨文年度变化触发器
我遇到了一个我无法解决的问题。我在C++ Builder 2009和Oracle 11g中构建了一个应用程序。我有一些根据用户年龄计算的数据。我想做的是每年重新计算这些数据。我想我可以触发这样做,但我不知道我应该抓住哪个事件,我也没有在互联网上找到什么 我的桌子是:Oracle11g 甲骨文年度变化触发器,oracle11g,c++builder,Oracle11g,C++builder,我遇到了一个我无法解决的问题。我在C++ Builder 2009和Oracle 11g中构建了一个应用程序。我有一些根据用户年龄计算的数据。我想做的是每年重新计算这些数据。我想我可以触发这样做,但我不知道我应该抓住哪个事件,我也没有在互联网上找到什么 我的桌子是: ATHLETE (name, ......, birthdate, Max_heart_frequency) 最大心率取决于年龄。我计算了运动员的年龄,但明年呢?????? 有人可以帮忙吗???您可以使用oracle schedu
ATHLETE (name, ......, birthdate, Max_heart_frequency)
最大心率取决于年龄。我计算了运动员的年龄,但明年呢??????
有人可以帮忙吗???您可以使用oracle scheduler以特定的时间间隔(可以是分钟、小时、每天、每年等任何时间跨度)运行过程 检查此链接: 您有两个选择:
如何计算最大心脏频率 如果这是一个简单的公式,我将创建一个返回该信息的视图。无需存储易于计算的值:
CREATE VIEW v_athlete
AS
select name,
case
-- younger than 20 years
when (MONTHS_BETWEEN(sysdate, birthday) / 12) < 20 then 180
-- younger than 40 years
when (MONTHS_BETWEEN(sysdate, birthday) / 12) < 40 then 160
-- younger than 60 years
when (MONTHS_BETWEEN(sysdate, birthday) / 12) < 60 then 140
-- everyone else
else 120
end as max_heart_frequency
from athlete
创建视图v\u
作为
选择名称,
案例
--20岁以下
当(系统日期、生日)/12之间的月数小于20时,则为180
--40岁以下
当(系统日期、生日)/12之间的月数小于40时,则为160
--60岁以下
当(系统日期、生日)/12之间的月数小于60时,则为140
--其他人
其他120
以最大心脏频率结束
来自运动员
然后,您只需要从视图中进行选择,它将始终是准确的 如果
Max\u Heart\u Frequency
随着时间的推移而变化,因为用户年龄越来越大,那么您首先为什么要将其存储在表中?为什么不在需要最大心率时调用计算最大心率的函数呢?潜在地,在运动员
表的顶部有一个视图,该视图添加计算的最大心率
列,以向呼叫者隐藏这是一个计算列。这是一个选项。谢谢你的回复。我想这就是我一直在寻找的解决方案。我会查出来的…谢谢你的帮助!这不是那么简单的公式,它不会像这样正常工作,但谢谢!如果公式不是那么简单,则将其放入存储函数中,并从视图中调用该函数