SQL基礎(chǔ):SQL?Server新特性SequenceNumber用法介紹
時間:2024-02-13 10:23作者:下載吧人氣:21
簡介
SequenceNumber是SQL Server2012推出的一個新特性。這個特性允許數(shù)據(jù)庫級別的序列號在多表或多列之間共享。對于某些場景會非常有用,比如,你需要在多個表之間公用一個流水號。以往的做法是額外建立一個表,然后存儲流水號。而新插入的流水號需要兩個步驟:
- 1.查詢表中流水號的最大值
- 2.插入新值(最大值+1)
現(xiàn)在,利用SQL Server2012中的Sequence.這類操作將會變得非常容易。
SequenceNumber的基本概念
SequenceNumber的概念并不是一個新概念,Oracle早就已經(jīng)實(shí)現(xiàn)了(http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_6015.htm)。與以往的Identity列不同的是。SequenceNumber是一個與構(gòu)架綁定的數(shù)據(jù)庫級別的對象,而不是與具體的表的具體列所綁定。這意味著SequenceNumber帶來多表之間共享序列號的遍歷之外,還會帶來如下不利影響:
- 與Identity列不同的是,Sequence插入表中的序列號可以被Update,除非通過觸發(fā)器來進(jìn)行保護(hù)
- 與Identity列不同,Sequence有可能插入重復(fù)值(對于循環(huán)SequenceNumber來說)
- Sequence僅僅負(fù)責(zé)產(chǎn)生序列號,并不負(fù)責(zé)控制如何使用序列號,因此當(dāng)生成一個序列號被Rollback之后,Sequence會繼續(xù)生成下一個號,從而在序列號之間產(chǎn)生間隙。
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 } ]
[ ; ]
標(biāo)簽MSSQL,SQLServer,技術(shù)文檔,數(shù)據(jù)庫,SQLSERVER
網(wǎng)友評論