SQL Server 2012 開發新功能 序列對象(Sequence)


    眾所周知,在之前的sqlserver版本中,一般采用GUID或者identity來作為標示符,但是identity是一個表對象,只能保證在一張表里面的序列,當我們遇到以下情況時,

表1

ID 訂單類型 價格
1 火車票 200
4 飛機票 2000
5 船票 600

 

表2

ID 訂單類型 價格
2 酒店 400
3 公園門票 170
6 租車費用 300

 

如上圖,我們需要在多表之間,實現ID的一致性,在sqlserver里面就會有一定的麻煩,通常我們會使用額外使用一張temp表來映射這些ID的關系然后再從中取序列來完成。

sequence在oracle中其實很早就存在了,sqlserver 2012的sequence功能和那個相似,是一個基於schema的對象,所以可以被多表調用。

sequence語法如下:

[html] view plaincopyprint?
  1. CREATE SEQUENCE [schema_name . ] sequence_name 
  2.     [ AS [ built_in_integer_type | user-defined_integer_type ] ] 
  3.     [ START WITH <constant>
  4.     [ INCREMENT BY <constant>
  5.     [ { MINVALUE [ <constant> ] } | { NO MINVALUE } ] 
  6.     [ { MAXVALUE [ <constant> ] } | { NO MAXVALUE } ] 
  7.     [ CYCLE | { NO CYCLE } ] 
  8.     [ { CACHE [ <constant> ] } | { NO CACHE } ] 
  9.     [ ; ] 
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 } ]
    [ ; ]

start with 設置起始值

increment by 設置增長間隔

min和max分別設置最小和最大值

cycle設置是否循環

cache指定緩存的設置


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM