若系統有個功能取號機制,希望相依的幾個功能都依據這個順序處理相關事務,
有時我們會自己寫順序表,然後搭配一些程式邏輯來實現,這邊簡單紀錄一下。
新增
Sequence 是在 SQL2012 推出的,可在資料庫中的「可程式性」底下的「順序」找到它
可使用滑鼠右鍵新增,如下圖
新增時可先使用預設值,如下圖
點選確定後,使用滑鼠右鍵→屬性,檢視內容,其中最大值與最小值會依據
所選的資料類型決定;其中遞增量亦可設定每次增加 5 或任意數值,另外還
提供「目前值」顯示
這邊說明一下快取選項
無快取:每次都由系統資料表目前的值計算下個序號,存入系統表並回傳
預設大小:預設取一段區間到記憶體(如1~15),並將15存入系統表,當要取16 的序號時會重新取區間
快取大小:依據配置的記憶體大小,同樣提供一段區間到記憶體,其他機制如同「預設大小」
其中快取選項,如果 Database Engine 因停電等事件而異常停止,記憶體中下一個預定序號(如22),
寫入系統表紀錄,當Server 重新啟動後,順序會以讀取系統資料表的數字重新啟動(22)
讀取
可使用以下語法
NEXT VALUE FOR Test.dbo.[Sequence-Test]
亦可使用以下語法檢視目前資料庫存在的Sequence 物件
SELECT * FROM SYS.SEQUENCES;
沒有留言:
張貼留言