2015-04-17 64 views
1

我有一個包含貸款的表。這些貸款來自不同的商店,商店在不同的州。SQL多個序列每店唯一

有一個州的要求,每個商店的位置必須有一個唯一的數字代碼貸款和序列不得有任何差距。由於這些數據都在一個統一的表格中,我正在尋找一種方法來爲每個商店分配一個特定的序列。序列的內容可以在商店之間複製,也就是說,商店10對於交易以及商店15可以具有10的序列值。

我知道我可以在插入後使用觸發器來查找用於商店的最後一個號碼並將其增加1,但正在尋找一些更優雅和防錯的東西來完成此操作

+0

這是報告的一次性問題嗎?或者這是一個正在進行的數字分配的要求?國家的要求似乎很神祕,但法律是法律。 –

+0

正在插入新記錄 –

+1

您唯一的選擇可能是使用觸發器或將所有插入操作都包裝到存儲過程中的表中,這些存儲過程基本上是一樣的(這是我將採用的方法)。 –

回答

0

使用序列!

CREATE SEQUENCE loans.StateOfXYLoanNum 
    START WITH 100000 
    INCREMENT BY 1 ; 
GO 

需要您的程序,觸發器或手動干預來獲取下一個值並將其插入表中。

更多這裏:https://msdn.microsoft.com/en-us/library/ff878091.aspx

+0

不幸的是,你不能使用這個序列。 。 。請記住,這裏有法律要求。序列可能有差距;下面是文檔中的一個示例:「如果使用NEXT VALUE FOR或sp_sequence_get_range函數請求數字,但仍可能出現間隙,但這些數字要麼未使用,要麼用於未提交的事務中。」不幸的是,對於這種類型的需求,需要相當昂貴的鎖定來確保適當的枚舉。 –