• Sql:SQL Server CREATE SEQUENCE statement


    ---自动增长跳至1001  https://stackoverflow.com/questions/17587094/identity-column-value-suddenly-jumps-to-1001-in-sql-server
    --1. 使用序列 (Sequence) https://docs.microsoft.com/zh-cn/sql/t-sql/statements/create-sequence-transact-sql?view=sql-server-ver15
    --2. 为SQL Server 注册启动参数 -t272
    IF EXISTS(SELECT * FROM sys.sequences WHERE name = N'Id_Sequence')
        DROP SEQUENCE Id_Sequence;
    GO
    CREATE SEQUENCE Id_Sequence
        AS INT
        START WITH 1 --从1开始计数
        INCREMENT BY 1 -- 每次加几个
        MINVALUE 0  --最小值
        NO MAXVALUE --没有最大值
       CACHE 10  --设置缓存cache个序列
    GO
    /*
    START WITH <constant>
    序列对象返回的第一个值。 START 值必须小于或等于序列对象的最大值并大于或等于其最小值。 新序列对象的默认起始值是升序序列对象的最小值和降序序列对象的最大值。
    INCREMENT BY <constant>
    每次调用 NEXT VALUE FOR 函数时序列对象值递增(如果为负数,则为递减)的值。 如果增量是负值,则序列对象为降序,否则为升序。 增量不能为 0。 新序列对象的默认增量为 1。
    [ MINVALUE <constant> | NO MINVALUE ]
    指定序列对象的边界。 一个新序列对象的默认最小值是该序列对象的数据类型的最小值。 对于 tinyint 数据类型,此值为零,对于所有其他数据类型则为负数。
    [ MAXVALUE <constant> | NO MAXVALUE
    指定序列对象的边界。 一个新序列对象的默认最大值是该序列对象的数据类型的最大值。
    [ CYCLE | NO CYCLE ]
    此属性指定当超过序列对象的最小值或最大值时,序列对象是应从最小值(对于降序序列对象,则为最大值)重新开始,还是应引发异常。 新序列对象的默认循环选项是 NO CYCLE。
    [ CACHE [<constant> ] | NO CACHE ]
    通过最大限度地减少生成序列编号所需的磁盘 IO 数,可以提高使用序列对象的应用程序的性能。 默认值为 CACHE。
    例如,如果选择的缓存大小为 50,SQL Server 并不会缓存 50 个单个值。 它只是缓存当前值和缓存中保留的值数。 这意味着,存储缓存所需的内存量始终为序列对象的数据类型的两个实例。
    */
    DROP table DuInvoiceReceipts
    go
    
    
    CREATE TABLE DuInvoiceReceipts
    (
        Duid   INT PRIMARY KEY
            DEFAULT (NEXT VALUE FOR Id_Sequence), 
        orderId     INT NOT NULL, 
        isLate      BIT NOT NULL,
        receiptDate Datetime NOT NULL,
        note NVARCHAR(100)
    );
    go
    
    insert into DuInvoiceReceipts(orderId,isLate,receiptDate,note) 
    SELECT 2,1,getdate(),N'geovindu' union
    SELECT 3,1,getdate(),N'涂聚文' union
    SELECT 4,1,getdate(),N'geovin' union
    SELECT 5,1,getdate(),N'du' union
    SELECT 6,0,getdate(),N'涂年生' union
    SELECT 7,1,getdate(),N'江西' union
    SELECT 8,1,getdate(),N'塗聚文(Geovin Du)' union
    SELECT 9,1,getdate(),N'井岗山' 
    go
    
    select * from DuInvoiceReceipts
    go
    
    --
    SELECT * FROM sys.sequences WHERE name = 'Id_Sequence' ;  
    go
    --查询一下个值 
    SELECT NEXT VALUE FOR Id_Sequence
    go
    

      

  • 相关阅读:
    逆波兰计算器
    单链表 头指针与头结点
    Python中sorted()方法的用法
    python 元组
    Python的lambda匿名函数
    sublime text 2
    python语句讲解
    URAL 1081 Binary Lexicographic Sequence
    POJ 3623 Best Cow Line, Gold(字符串处理)
    POJ 2142:The Balance_扩展欧几里得(多组解)
  • 原文地址:https://www.cnblogs.com/geovindu/p/13438446.html
Copyright © 2020-2023  润新知