我试图弄清楚在我的数据库表中调用该列的内容,该列将 INT 保存到特定的“记录版本”。我目前正在使用“ RecordOrder ”,但我不喜欢这样,因为人们认为higher=newer,但我使用它的方式,lower=newer(“1”是当前记录,“2”是第二个最新的,“3”更老,依此类推)。我考虑过“ RecordVersion ”,但恐怕会有同样的问题。还有其他建议吗?“记录时代”?
我这样做是因为当我插入表格时,不必找出下一个版本,然后冒着在我写之前从我身上偷走该号码的风险,我只需插入带有“RecordOrder”为0的插入. 表 AFTER INSERT 上有一个触发器,它将该键的所有“RecordOrder”数字加 1,所以我刚刚插入的记录变为“1”,所有其他记录都加 1。这样,你可以得到一个人的当前记录通过选择 RecordOrder=1,而不是获取 MAX(RecordOrder) 然后选择它。
PS -我也愿意批评为什么这是一个糟糕的主意,我应该增加这个索引。这似乎使查找更容易,但如果这是一个坏主意,请赐教!
有关数据的一些详细信息,例如:
我有以下数据库表:
CREATE TABLE AmountDue (
CustomerNumber INT,
AmountDue DECIMAL(14,2),
RecordOrder SMALLINT,
RecordCreated DATETIME
)
我的数据子集如下所示:
CustomerNumber Amountdue RecordOrder RecordCreated
100 0 1 2009-12-19 05:10:10.123
100 10.05 2 2009-12-15 06:12:10.123
100 100.00 3 2009-12-14 14:19:10.123
101 5.00 1 2009-11-14 05:16:10.123
在此示例中,客户 100 有三行 - 他们欠 100 美元,然后是 10.05 美元,现在他们什么都不欠。让我知道是否需要进一步澄清。
更新:
“RecordOrder”和“RecordCreated”列对用户不可用 - 它们仅供内部使用,并帮助确定哪个是当前客户记录。此外,我可以使用它返回一个适当排序的客户历史记录,尽管我可以很容易地使用日期来完成。我想,我可以只用 RecordCreated 日期完成与递增“记录版本”相同的事情,但这消除了知道 RecordOrder=1 是当前记录的便利,我又回到做一个子查询DateTime 上的 MAX 或 MIN 以确定最近的记录。