SQL Server 2012 前無原生 SEQUENCE 對象,需自建序列表 + 存儲過程模擬 Oracle NEXTVAL 行為。
| 設計點 | 實現方式 | 作用 |
|---|---|---|
| 原子性 | 單條 UPDATE 同時賦值變量與更新表 | 併發安全,無竞爭條件 |
| 步長可配 | Increment 列 | 支持緩存步長、分庫分表步長預留 |
| 類型容量 | CurVal BIGINT | 支撐 922 兆次調用,足夠大多數業務 |
| 唯一性 | SeName 唯一索引 | 保證序列名唯一,查詢極快 |
| 錯誤處理 | RAISERROR 返回錯誤碼 | 應用層可捕獲異常 |
優勢: 內核級實現、支持 CACHE 減少 I/O、支持 CYCLE/NO CYCLE、元數據可視。
SELECT CurVal FROM TSysSequence 獲取當前值作為原生 SEQUENCE 的 START WITH偽序列表 + 存儲過程是 SQL Server 早期模擬 Oracle SEQUENCE 的經典模式:**單表、單索引、單 UPDATE 原子操作**,滿足唯一性、單調遞增、高併發核心需求。現代版本請優先使用原生對象。