zoukankan      html  css  js  c++  java
  • SQL Server 2012 开发新功能 序列对象(Sequence)(转)

    转载链接:http://www.cnblogs.com/zhangyoushugz/archive/2012/11/09/2762720.html    

    众所周知,在之前的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语法如下:

    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指定缓存的设置

  • 相关阅读:
    UWP AppConnection.
    Qt 多线程使用moveToThread
    C#综合细说进程、应用程序域与上下文
    C++ std::function
    商品价格加价区间的实现(策略模式)
    学习web前端三个月感悟
    triangle leetcode C++
    Linux入门视频
    轻松学习Linux之进程监视与管理
    阻止缓冲区溢出攻击
  • 原文地址:https://www.cnblogs.com/yxlblogs/p/5374012.html
Copyright © 2011-2022 走看看