我想弄清楚什么要调用我的数据库表中保存INT到特定“记录版本”的列。我目前使用“RecordOrder”,但我不喜欢那样,因为人们认为更高=更新,但是我使用它的方式,更低=更新(以“1”为当前记录,“2 “成为第二最新的”,“3”更老,等等)。我认为“RecordVersion”,但我恐怕会有同样的问题。还有其他建议吗? “RecordAge”?什么名称列在数据库表中保存版本号
我这样做是因为当我插入到表中时,而不必知道下一个版本是什么,然后运行在编写之前从我那里窃取的编号的风险,我只是插入带有“ 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美元,现在他们什么也没欠。让我知道是否需要再澄清一点。
UPDATE:
的“RecordOrder”和“RecordCreated”列不提供给用户 - 他们只是有供内部使用,并帮助找出哪些是当前的客户记录。此外,我可以用它来返回适当的客户历史记录,尽管我可以轻松地在日期上做到这一点。我可以完成同样的事情,只是使用RecordCreated日期递增的“Record Version”(记录版本),但是这消除了了解RecordOrder = 1是否为当前记录的便利性,然后我回到了执行子查询MAX或MIN在DateTime上确定最近的记录。
+1关心比我的DBA更多。 – iandisme 2010-01-08 19:59:01