SQL基礎:SQL?Server新特性SequenceNumber用法介紹
時間:2024-02-13 10:23作者:下載吧人氣:14
簡介
SequenceNumber是SQL Server2012推出的一個新特性。這個特性允許數據庫級別的序列號在多表或多列之間共享。對于某些場景會非常有用,比如,你需要在多個表之間公用一個流水號。以往的做法是額外建立一個表,然后存儲流水號。而新插入的流水號需要兩個步驟:
- 1.查詢表中流水號的最大值
- 2.插入新值(最大值+1)
現在,利用SQL Server2012中的Sequence.這類操作將會變得非常容易。
SequenceNumber的基本概念
SequenceNumber的概念并不是一個新概念,Oracle早就已經實現了(http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_6015.htm)。與以往的Identity列不同的是。SequenceNumber是一個與構架綁定的數據庫級別的對象,而不是與具體的表的具體列所綁定。這意味著SequenceNumber帶來多表之間共享序列號的遍歷之外,還會帶來如下不利影響:
- 與Identity列不同的是,Sequence插入表中的序列號可以被Update,除非通過觸發器來進行保護
- 與Identity列不同,Sequence有可能插入重復值(對于循環SequenceNumber來說)
- Sequence僅僅負責產生序列號,并不負責控制如何使用序列號,因此當生成一個序列號被Rollback之后,Sequence會繼續生成下一個號,從而在序列號之間產生間隙。
SequenceNumber的用法
SequenceNumber在MSDN中定義的原型如代碼1所示。
CREATE SEQUENCE [schema_name . ] sequence_name
[ AS [ built_in_integer_type | user-defined_integer_type ] ]
[ START WITH <constant> ]
[ INCREMENT BY <constant> ]
[ { MINVALUE [ <constant> ] } | { NO MINVALUE } ]
[ { MAXVALUE [ <constant> ] } | { NO MAXVALUE } ]
[ CYCLE | { NO CYCLE } ]
[ { CACHE [ <constant> ] } | { NO CACHE } ]
[ ; ]
標簽MSSQL,SQLServer,技術文檔,數據庫,SQLSERVER
網友評論