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

  • 相关阅读:
    软工实践寒假作业2
    nginx前端代理配置文件
    个人作业——软件工程实践总结&个人技术博客
    个人作业——软件评测
    结对第二次作业——某次疫情统计可视化的实现
    结对第一次—疫情统计可视化(原型设计)
    软件工程实践寒假作业(2/2)
    软工实践寒假作业(1/2)
    毕设11.2
    毕设计划(11.1-11.8)
  • 原文地址:https://www.cnblogs.com/yxlblogs/p/5374012.html
Copyright © 2011-2022 走看看