??? 眾所周知,在之前的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語法如下:
- 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 } ]?
- ??? [ ; ]?
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指定緩存的設置
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
