在数据库中, 常用的一个流水编号通常会使用 identity 字段来进行设置, 这种编号的好处是一定不会重复, 而且一定是唯一的, 这对table中的唯一值特性很重要, 通常用来做客户编号, 订单编号等功能, 以下介绍关于此种字段常用方式及相关技术.
后面的范例表皆以此表为建立:
CREATE TABLE products (id int IDENTITY PRIMARY KEY, product varchar(40))
1. 在程序中取得identity值:
因为 identity 特性, 所以在 insert into 该 table 时, 不能指定该 identity 字段值, 仅能指定其它字段值, 而 identity 由数据库维护, 所以一般要在 insert 后取得该 identity 字段值, 则通常使用下面方式:
insert into products (product) values ('saw')
select @@identity
利用全域变量 @@identity 来取得最后影响的 insert 后产生的 identity 值
, 如此一来便能方便地使用 identity 字段.
注意: 该值和后面3里的“identity最大值多少”的区别是????

2. 若要启用 识别插入(identity insert)时, 也就是如空缺号要指定 identity 字段值时, 或者是处理数据表整理或备出时, 会用到的方式:
set identity_insert products on
insert into products (id, product) value (3, 'screwdriver')
要注意的地方是可以 insert 空缺号, 也可以加至最后, 但系统会自动更新 identity 至最大值, 要注意一旦启用 identity_insert 时, 就一定要给定 identity 值, 另外并不能 update 该 identity 字段值, 也就是说 identity_insert 该 identity 字段仅 for insert, 不能 update.

3. 查询目前 identity 值:
有时我们需要查询 目前 table 中该 identity 字段最大值是多少时, 可以利用 dbcc 指令, 如下:
dbcc checkident('product', NORESEED)
可以获得目前最大值的结果.

4.  重设目前最大 identity 值:
一样利用 dbcc 指令, 如下:
dbcc checkident('product', RESEED, 100)
如此一来, 便能将目前的最大 identity 值指向100, 当然若故意设比目前最大值小时, 系统仍会接受, 但若 identity 遇上重复数据时(如将identity 设为 primary key时), 将会发生重大问题, 该 table 变成无法 insert 数据, 因为会发生 primary key violation,  解决方法当然就是将目前的 identity 修复, 直接使用
dbcc checkident('product', RESEED)
 或
dbcc checkident('product') -- 无效????
(两者等义)即可顺利修复.

5. identity 字段遇上 rollback 时:
当 identity 字段碰到 rollback 时, 会发生跳号现象, 也就是说在 transaction 中, insert 了一笔数据, 但又 rollback 时, 该 identity 号会消失, 如下测试:
begin tran
insert into products (product) values ('test rollback')
rollback tran
dbcc checkident('product', NORESEED)
这个观念很重要, 因为要维持 identity 特性, 但又发生 rollback, 所以系统就直接跳号处理啰, 避免发生重复编号的问题.

Identity的知识相关推荐

  1. 学习Identity Server 4的预备知识

    我要使用asp.net core 2.0 web api 搭建一个基础框架并立即应用于一个实际的项目中去.这里需要使用identity server 4 做单点登陆.下面就简单学习一下相关的预备知识. ...

  2. 【IBM Tivoli Identity Manager 学习文档】2 部署准备知识

      作者:gnuhpc  出处:http://www.cnblogs.com/gnuhpc/ 首先明确TIM的架构如下: 1.数据库服务器 TIM将交易数据和历史数据放置在数据库服务器内,一个关系型数 ...

  3. CV:计算机视觉技术之图像基础知识(二)—图像内核的九种卷积核可视化解释(blur/bottom sobel /emboss/identity /sobel /outline/sharpen)

    CV:计算机视觉技术之图像基础知识(二)-图像内核的九种卷积核可视化解释(blur/bottom sobel /emboss/identity /left sobel /outline/right s ...

  4. Identity Server 4 预备知识 -- OpenID Connect 简介

    我之前的文章简单的介绍了OAuth 2.0 (在这里: 要用Identity Server 4 -- OAuth 2.0 超级简介, 还不是很全. 这篇文章我要介绍一下 OpenID Connect. ...

  5. 【LTE基础知识】GUTI(Globally Unique Temporary UE Identity)分配

    LTE Attach附着过程由UE向eNodeB发送携带Attach Request消息的RRC消息发起,在初始附着过程中,Mobile Equipment Identity从UE发送的Attach ...

  6. SQL 数据完整性 基础知识

    数据完整性 基础知识 实体完整性<?XML:NAMESPACE PREFIX = O /> 实体完整性将行定义为特定表的唯一实体.实体完整性通过索引.UNIQUE 约束.PRIMARY K ...

  7. 使用Identity Server 4建立Authorization Server (3)

    预备知识: http://www.cnblogs.com/cgzl/p/7746496.html 第一部分: http://www.cnblogs.com/cgzl/p/7780559.html 第二 ...

  8. 史上最全《知识图谱》2020综述论文!!!

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 知识图谱是当下的研究热点.最近18位学者共同撰写了一篇<知识图谱>综述 ...

  9. Sql Server插入数据并返回自增ID,@@IDENTITY,SCOPE_IDENTITY和IDENT_CURRENT的区别

    预备知识:SQLServer的IDENTITY关键字 IDENTITY关键字代表的是一个函数,而不是identity属性.在access里边没有这个函数,所以在access不能用这个语句.语法:ide ...

最新文章

  1. Android布局优化之include、merge、ViewStub
  2. 代码审查就是在排大便——你懂的!
  3. Office word 2007不能另存为pdf格式的解决方法
  4. 中国靶材行业需求前景分析及发展形势研究报告2021版
  5. 分析BootstrapClassLoader/ExtClassLoader/AppClassLoader的加载路径 及父委托机制
  6. 浅谈Java泛型中的? extends E和?super E
  7. LeetCode 47. 全排列 II(回溯+搜索剪枝)
  8. pillow是python的图像处理标准库_Python图像处理库:Pillow 初级教程
  9. 删除Github上项目
  10. 重磅消息,Micrium的uCOS全家桶将推出免费商业授权
  11. Java实现:挖金矿问题
  12. 《UnityAPI.Vector3三维向量》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+Vector3+Lerp+Cross+Dot+Slerp+立钻哥哥++OK++)
  13. 使用canvas实现贪吃蛇
  14. 蘑菇街三人斗地主随机发牌的笔试题
  15. QT之调用百度地图离线API
  16. 我错过了乔布斯和初代 iPhone,十年后幸好没错过你
  17. 搭建Openstack环境以及Openstack认证服务
  18. 前端白屏问题_小程序白屏问题和内存解决方法
  19. 屏蔽【CSDN站内搜索聚合】,百度搜索结果过滤【CSDN已经为您找到】
  20. 基于Python+Open CV的手势识别算法设计

热门文章

  1. 通证经济大局观(十五):稀缺性与权衡取舍
  2. 招聘行业2021市场分析报告
  3. 跟着pink老师学前端HTML-D2
  4. LE SMP加密算法设计和实现(python)
  5. Docker 实现挂载的三种方式
  6. SMART 工作方法论
  7. CM+CDH 构建企业大数据平台
  8. 用python函数画德国国旗代码_求一段python中用class方法绘制国旗的代码!记得不是常见的海龟做法!这个星期给我再加送财富点!...
  9. python颜色识别_颜色检测python
  10. IntelliJ IDEA 设置文件编码