【发布时间】:2013-11-20 03:32:08
【问题描述】:
我的数据库中有一个名为 stockpricehistory 的表,它跟踪库存项目的价格变化,并包含以下字段:
- 股票编号
- 价格
- DateStart(引入该特定价格的时间)
- DateEnd(当该特定价格停止使用时)。
DateStart 默认为 CURRENT_TIMESTAMP,DateEnd 默认为空,就好像没有 DateEnd 值一样,那么该行中的价格就是该股票的当前价格。
现在,我如何(我假设它是通过触发器)做到这一点,以便每当我为特定库存项目插入新行时,它会更新该库存项目的最后一个当前行(即匹配的行该库存项目,其中 DateEnd 设置为 NULL)以匹配刚刚为要插入的新行提供的 DateStart 值,如下所示:
这是表格的初始状态:
- 1,2.99,2013-11-19 18:49:24,NULL
然后,当为 Stock (ID 1) 的该项目插入新行时,结果如下:
1,4.99,2013-11-20 12:00:00,NULL
1,2.99,2013-11-19 18:49:24,2013-11-20 12:00:00
理论上,它应该只需要更新一行,因为每个股票ID只有一行没有结束日期,也就是当前价格的行。
我认为这将通过 BEFORE INSERT 触发器完成,但我很可能错了。
【问题讨论】: