2021年6月2日 星期三

SQL Server Sequence

若系統有個功能取號機制,希望相依的幾個功能都依據這個順序處理相關事務,

有時我們會自己寫順序表,然後搭配一些程式邏輯來實現,這邊簡單紀錄一下。


新增

Sequence 是在 SQL2012 推出的,可在資料庫中的「可程式性」底下的「順序」找到它



可使用滑鼠右鍵新增,如下圖





新增時可先使用預設值,如下圖


點選確定後,使用滑鼠右鍵→屬性,檢視內容,其中最大值與最小值會依據

所選的資料類型決定;其中遞增量亦可設定每次增加 5 或任意數值,另外還

提供「目前值」顯示



這邊說明一下快取選項

  • 無快取:每次都由系統資料表目前的值計算下個序號,存入系統表並回傳

  • 預設大小:預設取一段區間到記憶體(如1~15),並將15存入系統表,當要取16 的序號時會重新取區間

  • 快取大小:依據配置的記憶體大小,同樣提供一段區間到記憶體,其他機制如同「預設大小」

其中快取選項,如果 Database Engine 因停電等事件而異常停止,記憶體中下一個預定序號(如22),

寫入系統表紀錄,當Server 重新啟動後,順序會以讀取系統資料表的數字重新啟動(22)


讀取

可使用以下語法 


NEXT VALUE FOR Test.dbo.[Sequence-Test]





亦可使用以下語法檢視目前資料庫存在的Sequence 物件


SELECT * FROM SYS.SEQUENCES;



 

沒有留言:

張貼留言