我想弄清楚什麼要調用我的數據庫表中保存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