我有一个数据库,会定期更新关系。我想存储新数据和旧数据,并且能够在需要时提取新数据。例如:
物品及其价格。物品的价格可能会发生变化,但我想记下旧价格,同时仍然只能提取当前相关的价格。
我现在认为这样做的最好方法是拥有有效的开始和结束日期。因此,如果您愿意,我可以查询仅提取尚未“过期”的关系。有没有更好或更有效的方法来做到这一点?
答案 0 :(得分:0)
我能想到的最好的是创建一个触发器。
创建一个触发器,在将新行插入表
时触发因此,您将为组合添加一个新行。当您只需要新数据时,请提示flag =' new'。所有旧行都会有更新日期,说明它何时成为旧价格
答案 1 :(得分:0)
您可以像市场上的ERP一样为价格历史创建一个表。
PRICE_HIST
此表包含所有价格变动的历史记录 在系统内应用。历史永远留在这张桌子上 SKU /商店组合。
Column Nulls ? Type
------ ------- ----
TRAN_TYPE NOT NULL NUMBER (2, 0)
REASON NULL NUMBER (2, 0)
EVENT NULL VARCHAR2 (6)
ITEM NOT NULL VARCHAR2 (25)
LOC NOT NULL NUMBER (10, 0)
LOC_TYPE NULL VARCHAR2 (1)
UNIT_COST NULL NUMBER (20, 4)
UNIT_RETAIL NULL NUMBER (20, 4)
SELLING_UNIT_RETAIL NULL NUMBER (20, 4)
SELLING_UOM NULL VARCHAR2 (4)
ACTION_DATE NOT NULL DATE
MULTI_UNITS NULL NUMBER (12, 4)
MULTI_UNIT_RETAIL NULL NUMBER (20, 4)
MULTI_SELLING_UOM NULL VARCHAR2 (4)
POST_DATE NULL DATE
ACTION_DATE
包含价格变动生效的日期。