2009-02-16 20 views
1

在SQL數據庫中每天創建新序列號序列的好方法是什麼?每天新鮮的SQL序列

類似於某些數據庫系統中整數列的自動遞增功能。

我正在創建/記錄交易,並且交易由雙'日期,序列號'標識。

+0

正常(單調遞增)序列號有什麼問題? – kmkaplan 2009-02-16 19:45:51

+0

這是用於包含日期+序列號的證書。鑑於日期每隔幾個小時更改一次,我不需要序列號這麼大的插槽。我試圖保存每一個角色。 – 2009-02-17 02:01:23

回答

0

最好的方法是使用日期作爲數字的一部分,例如今天有080216001到080216999。你可以有不連續的號碼嗎?

1

這取決於你有什麼樣的數據庫。如果您可以訪問全局變量或生成器,則每天重置它並使用它來爲序列號列生成種子。如果沒有,您可以將該值存儲在一個表格中,然後查看它以對列進行種子處理,每天重新設置一次。

如果有必要,不要忘記手動增加種子。 (發生器是一種特殊的全局變量,可以自動增加自己,如果設置的話,其他變量和表格中的記錄肯定不會)

要重置該值,只需在插入時設置一個觸發器檢查COUNT(DATE = today)是否爲0.如果是,則重置該值。

1

爲了這個目的,特定表格如何?

create table AvailableSerialNumbers (
    AvailableOn datetime primarykey, 
    NextAvailableNumber int 
) 

你不得不提前填充此,但這是非常直接的(確保這是手動自動,而不是完成)。

請注意,如果您在創建大量序列號記錄的同時創建邏輯將更新AvailbleSerialNumbers記錄的瓶頸。解決這個問題最簡單的方法是每天定義多個AvailableSerialNumbers記錄(比如說100個),然後隨機選擇1來更新。如果使用這種方法,而不是「NextAvailableNumber」字段,它應該是從/到範圍。當範圍命中時,刪除範圍記錄。