SQL基礎(chǔ):SQL?Server中Sequence對(duì)象用法
時(shí)間:2024-02-14 10:20作者:下載吧人氣:28
一、Sequence簡(jiǎn)介
Sequence對(duì)象對(duì)于Oracle用戶(hù)來(lái)說(shuō)是最熟悉不過(guò)的數(shù)據(jù)庫(kù)對(duì)象了, 在SQL SERVER2012終于也可以看到這個(gè)對(duì)象了。Sequence是SQL Server2012推出的一個(gè)新特性。這個(gè)特性允許數(shù)據(jù)庫(kù)級(jí)別的序列號(hào)在多表或多列之間共享。
二、Sequence基本概念
Oracle中有Sequence的功能,SQL server類(lèi)似的功能要使用identity列實(shí)現(xiàn),但是identity列有很大的局限性。微軟終于在2012中添加了Sequence對(duì)象。與以往identity列不同的是:Sequence是一個(gè) 與架構(gòu)綁定的數(shù)據(jù)庫(kù)級(jí)別的對(duì)象,而不是與具體的表的具體列所綁定。這就意味著Sequence帶來(lái)多表之間共享序列號(hào)的便利之外,還會(huì)帶來(lái)如下不利影響:
- 1、與identity列不同的是,Sequence插入表中的序列號(hào)可以被Update,除非通過(guò)觸發(fā)器來(lái)進(jìn)行保護(hù)
- 2、與identity列不同,Sequence有肯能插入重復(fù)值(Sequence可以設(shè)置循環(huán),對(duì)于循環(huán)的Sequence來(lái)說(shuō)會(huì)有重復(fù)值)
- 3、Sequence僅僅負(fù)責(zé)產(chǎn)生序列號(hào),并不負(fù)責(zé)控制如何使用序列號(hào),因此當(dāng)生成一個(gè)序列號(hào)被Rollback之后,Sequence會(huì)繼續(xù)生成下一個(gè)序列號(hào),從而在序列號(hào)之間產(chǎn)生間隙
三、Sequence的用法
MSDN上對(duì)創(chuàng)建Sequence的語(yǔ)法如下:
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ù)庫(kù),SQLSERVER
網(wǎng)友評(píng)論