SQL Server 2012 开发新功能 序列对象(Sequenc

系统 1979 0

    众所周知,在之前的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指定缓存的设置

SQL Server 2012 开发新功能 序列对象(Sequence)


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论