使用触发器/函数计算对 postgresql 的兴趣
Posted
技术标签:
【中文标题】使用触发器/函数计算对 postgresql 的兴趣【英文标题】:Calculate interest on postgresql with trigger/function 【发布时间】:2011-07-03 15:02:04 【问题描述】:我目前正在开发一个简单的银行应用程序。
我已经建立了一个带有正确表和函数的 postgresql 数据库。
我的问题是,我不确定如何计算账户的利率。我有一个功能可以一次告诉我余额。
如果我们说我们有 1 个月的期限,我想在其中计算帐户的利息。余额如下所示:
February Balance
1. $1000
3. $300
10. $700
27. $500
Balance on end of month: $500
我最初的想法是创建一个 for 循环,从当月的第 1 天循环到当月的最后一天,并连续添加该特定天所获得的利息。
我想在月底使用的函数应该类似于addInterest(startDate,endDate,accountNumber)
,它应该在表格中插入一行,添加赚取的费率。
谁能带我走上正轨,或者给我看一些关于 PL/PGSQL 的好学习资源?
编辑
我已经阅读了一些关于游标的内容。我应该使用光标在表格中走动吗?
我发现使用游标有点混乱,这里有人有一些解释清楚的例子吗?
【问题讨论】:
【参考方案1】:manual 有一个关于循环和遍历查询结果的部分。还有用 pl/pgsql 编写的触发函数的例子。手册很全,是我所知道的最好的来源。
【讨论】:
我以前看过手册。它似乎是循环的一个很好的资源。但我也在考虑财务部分。这些计算在实际系统中是如何进行的?【参考方案2】:银行系统的利息计算方式多种多样。
利息 = 余额 x 利率 x 天数/年
余额类型
定期总结余 每日总余额费率类型
Fixed Rate Dynamic Rate(根据余额) 动态速率(根据条款) 动态速率(根据计划)日期/时间表的类型
日终处理(一天) 月末处理(一个月) 季末处理(三个月) 半处理结束(六个月) 年终处理(一年)年份公式
一年可以由 365 或 366 天组成。 您的用户可能想要覆盖一年中的天数,在您的应用程序中维护一个单独的年份变量属性。结论
利息应该作为例行任务来计算。最好的方法是根据个人帐户的频率设置按计划运行。
【讨论】:
优秀的答案。我用这个公式构建了一个函数,结果非常好。结果有点低效,因为我必须根据账户开始时的数据计算该期间每一天的账户余额。 (我知道,这很容易通过每笔交易的余额或类似的东西来解决)这是一个学校项目,我已经提交了。感谢您的澄清和出色的回答。以上是关于使用触发器/函数计算对 postgresql 的兴趣的主要内容,如果未能解决你的问题,请参考以下文章
PostgreSQL 相同的触发器函数在 INSERT 上更新到不同的表(使用相同的模式)