首页 > 数据库 >016 数据库学习笔记--序列

016 数据库学习笔记--序列

时间:2023-06-15 14:34:39浏览次数:55  
标签:sequence -- 数据库 NEXT GetOrderNOBySequence 016 序列 序列号

序列:获取唯一值,序列不支持事务回滚,会出现跳号

SQLServer 序列是一种逐步增加的命名的唯一的索引,它可以将一个整数标示符与一个数据行关联起来,并可保证该索引特别唯一。

凭借这一特性,序列对于对数据进行安全且按照某种有意义的排序进行保存的场景非常有用。

序列是一种用户定义的架构绑定对象,它根据创建该序列时采用的规范生成一组数值。 这组数值以定义的间隔按升序或降序生成,并且可根据要求循环(重复)

  • 序列不与表相关联,这一点与标识列不同。

  • 应用程序将引用某一序列对象以便接收其下一个值。

  • 序列是通过使用 CREATE SEQUENCE 语句独立于表来创建的。 其选项使您可以控制增量、最大值和最小值、起始点、自动重新开始功能和缓存以便改进性能。

  • 与在插入行时生成的标识列值不同,应用程序可以通过调用 NEXT VALUE FOR 函数在插入行之前获取下一序列号。 在调用 NEXT VALUE FOR 时分配该序列号,即使在该序列号永远也不插入某个表中时也是如此。 此 NEXT VALUE FOR 函数可用作表定义中某个列的默认值。

  • 使用 sp_sequence_get_range 可一次获取某个范围的多个序列号。

  • 序列可定义为任何整数数据类型。 如tinyint, smallint, int, bigint, decimal 或是小数精度为0的数值类型。如果未指定数据类型,则序列将默认为 bigint

序列的限制(limitation)有二个:

  • 序列不支持事务,即使事务中进行了回滚(rollback)操作,序列仍然返回下一个元素。

  • 序列不支持SQL Server 复制(replication),序列不会复制到订阅的SQL Server实例中。如果一个表的默认值依赖一个序列,而序列又是不可复制的,这会导致订阅的SQL Server出现脚本错误。

示例:

--删除序列
drop sequence GetOrderNOBySequence 
go
--创建序列 ,常用于确保数据列中的数据唯一,例如检查号、影像号、申请单号...
CREATE sequence GetOrderNOBySequence 
START WITH 1  --起始值
INCREMENT BY 1 --增长步长
MINVALUE 0  --最小  可省略
MAXVALUE 9999999999--最大 可省略
go
drop sequence GetOrderNOBySequence 
go
/****** Object:  Sequence [dbo].[GetOrderNOBySequence]    Script Date: 2023-06-15 13:56:09 ******/
CREATE SEQUENCE [dbo].[GetOrderNOBySequence] 
 AS [bigint]
 START WITH 1
 INCREMENT BY 1
 MINVALUE 0
 MAXVALUE 9999999999
 CACHE 
GO

--获取序列号
SELECT NEXT VALUE FOR GetOrderNOBySequence as 序列号

--重置序列号从 起始位置开始
ALTER SEQUENCE GetOrderNOBySequence  RESTART WITH 1 

--获取指定序列信息--确认缓存大小并查看当前值
SELECT cache_size, current_value   FROM sys.sequences  WHERE name = 'GetOrderNOBySequence' ;

  

 

标签:sequence,--,数据库,NEXT,GetOrderNOBySequence,016,序列,序列号
From: https://www.cnblogs.com/YYkun/p/17482660.html

相关文章

  • 云小课|RDS for MySQL参数模板一键导入导出,参数配置轻松搞定
    摘要:云数据库RDSforMySQL支持参数模板的导入和导出功能。本文分享自华为云社区《【云小课】【第56课】RDSforMySQL参数模板一键导入导出,参数配置轻松搞定》,作者:数据库的小云妹。云数据库RDSforMySQL支持参数模板的导入和导出功能。导入参数模板:导入后会生成一个新的参数模板,......
  • 矩阵的逆的代码符号
    矩阵的逆是矩阵理论中的一个重要概念。在数学和计算机科学中,矩阵的逆是指对于一个给定的方阵A,如果存在一个矩阵B,使得A与B的矩阵乘积等于单位矩阵I,即AB=BA=I,那么B就是A的逆矩阵。矩阵的逆可以用来解线性方程组、计算行列式的倒数、求解特征值等问题。在这里,我将使用Python编写代码......
  • 带重复元素的排列
    带重复元素的排列题目:描述给出一个具有重复数字的列表,找出列表所有不同的排列。样例样例1:输入:nums=[1,1]输出:[[1,1]]解释:[1,1]的不同排列只有[1,1]。样例2:输入:nums=[1,2,2]输出:[[1,2,2],[2,1,2],[2,2,1]]解题思路:首先思考如何去重,先......
  • docker常用命令
    docker常用命令镜像命令dockerimages #查看本地主机的镜像-a #列出本地所有镜像-q #只显示镜像iddockersearch #搜索对应的镜像eg:dockersearchmysql-f #可以对镜像进行筛选eg:dockersearchmysql-f=STARS=4338--limit#对镜像个数做限......
  • git push -u origin master 与git push --set-upstream origin master
    在github上新建仓库时提示push代码的指令:gitinitgitaddREADME.mdgitcommit-m"firstcommit"gitbranch-Mmaingitremoteaddoriginhttps://github.com/helloyzp/AlgorithmProject.gitgitpush-uoriginmain以前的提示一直是gitpush--set-upstreamoriginm......
  • python 调试pdb
    python调试pdbimportpdb;pdb.set_trace()这是一个Python代码中的调试技巧,用于在代码中插入一个断点,以便在程序执行到这个位置时,暂停程序并进入调试模式。具体来说,importpdb;pdb.set_trace()这行代码会导入Python标准库中的pdb模块,并在当前位置插入一个断点。在程序执行到......
  • 数字组合
    数字组合题目:描述给定一个候选数字的集合candidates和一个目标值target。找到candidates中所有的和为target的组合。在同一个组合中,candidates中的某个数字出现次数不限。所有数值(包括target)都是正整数.返回的每一个组合内的数字必须是非降序的.返回的所......
  • 搜狗五笔 date 自定义时间格式
    搜狗五笔date自定义时间格式 搜狗五笔date默认打出的是“2023-6-15”,如果需要“2023-06-15”,则需要在自定义短语中设置 属性设置-高级-找到“自定义短语”旁边的"设置"按钮,点击“设置”。点击“添加新定义”:缩写输入:date下面输入框输入:#$year-$month_mm-$day_dd保存......
  • 寻找峰值
    寻找峰值题目:描述给定一个整数数组(size为n),其具有以下特点:相邻位置的数字是不同的A[0]<A[1]并且A[n-2]>A[n-1]假定P是峰值的位置则满足A[P]>A[P-1]且A[P]>A[P+1],返回数组中任意一个峰值的位置。数组保证至少存在一个峰如果数组存在多个峰,返回其中任意一个......
  • 搜索二维矩阵(二)
    搜索二维矩阵(二)题目:描述写出一个高效的算法来搜索m×n矩阵中的值,返回这个值出现的次数。这个矩阵具有以下特性:每行中的整数从左到右是排序的。每一列的整数从上到下是排序的。在每一行或每一列中没有重复的整数。样例样例1:输入:矩阵=[[3,4]]target=3输出:1解释:矩阵......