一般來說, 俱有 identity 屬性欄位的 table 的目前值可以很容易地利用 max 函數來取得. 不過, 也很有可能 max 該筆資料已被刪除了, 所以利用 max 查找出來的結果不正確.

但又若是要找出下一個 identity 的值呢? 就一定得知道漸增量 (increment) 為何了, 否則是沒有辦法計算出來的.

請先參考這篇文章: SQL Server的Identity欄位使用/複製/重設 http://diary.tw/tim/65 , 這篇文章中也有提到有關取得目前的 identity 值的方式, 是利用 dbcc checkident('table_name', NORESEED) 來取回, 不過取回來的是文字訊息 (text message), 而不是很方便程式化, 若要滿足前面的需求, 包含取回 identity 目前值及下一個, 則有現成的函數可用:

  1. IDENT_CURRENT: 取出 identity 欄位的目前值
  2. IDENT_INCR: 取出 identity 欄位的漸增值
  3. IDENT_SEED: 取出 identity 欄位的起始種子

使用方式如下:

select IDENT_CURRENT('table_name')

這樣可以取出該 table_name table 中的 identity 欄位的目前值, 而下一個呢? 可以利用:

select IDENT_CURRENT('table_name') + IDENT_INCR('table_name')

這樣就可以順利取出來, 也就是拿目前值加上漸增值. 而且回傳的結果是一個 resultset 的方式將值傳回, 很方便應用於程式化的需求.

不過無論如何, 也請特別注意, 這種應用需求, 並非是要 developer 將值取出後再塞回去的, 因為 identity 欄位是由系統維護的, 而不是 developer (或說程式) 維護的, 所以這樣取出是可以拿來觀察, 而不是要塞回去用的, 請特別注意一下.

具体实例如下:

select Case when (Select Count(*) from 表名)=0 then IDENT_CURRENT('表名') else IDENT_CURRENT('表名')+IDENT_INCR('表名') end

转载于:https://www.cnblogs.com/jacker1979/archive/2010/09/07/1820378.html

如何取得SQL中自增伴位的下一个值相关推荐

  1. PL/SQL Developer 在windows7 64位系统下连Oaracle11g64位系统的解决经验

    PL/SQL Developer 在windows7 64位系统下连Oaracle11g64位系统的解决经验 一.问题现象及解决方法 现象: 1.PL/SQL 无法登录64位数据库 2.在PL/SQL ...

  2. INNODB自增主键的一些问题 vs mysql获得自增字段下一个值

    今天发现 批量插入下,自增主键不连续了....... InnoDB AUTO_INCREMENT Lock Modes This section describes the behavior of A ...

  3. mysql 主键 下一个值_INNODB自增主键的一些问题 vs mysql获得自增字段下一个值

    root@localhost : test 04:23:28>show variables like 'innodb_autoinc_lock_mode'; +----------------- ...

  4. 微信小程序开发--如何在swiper中显示两个item以及下一个item的部分内容

    如何在swiper中显示两个item以及下一个item的部分内容 我所实现的效果 我实现的代码 <!--图片轮播图--><!--要展示两个item 以及下一个item的部分内容,ci ...

  5. php 数组指向下一个值,比较数组值并根据自定义值(PHP)在数组中查找下一个值 - php...

    我正在尝试比较数组中的值,然后根据所选值在数组中选择下一个值. 例如 array(05:11,05:21,05:24,05:31,05:34,05:41,05:44,05:50,05:54); 如果搜 ...

  6. 64位系统下一个32位的程序究竟可以申请到多少内存?

    64位系统下一个32位的程序究竟可以申请到多少内存? cpu的位是指一次性可处理的数据量是多少,1字节=8位,32位处理器可以一次性处理4个字节的数据量,依次类推.32位操作系统针对的32位的CPU设 ...

  7. 获取mysql 自增id 和mysql 下一个自增id的方法

    mysql获取表中自增id的方法: 1. 使用 select MAX(id) from tablename; 获取的是表中最大的id:顺序执行  insert ---> delete 插入的数据 ...

  8. 窗体中实现按 回车键 跳到下一个可选的TabIndex控件

    Form中一"textbox",两"button",如何实现在textbox中按下回车响应button.click事件 : 1)把按钮的tabindex依次设置 ...

  9. 关于SQL中的ASSERTION(某单位想举行一个小型的联谊会……)

    某单位想举行一个小型的联谊会,关系male记录注册的男嘉宾的信息,关系female记录注册的女嘉宾的信息,建立一个断言,将来宾的人数限制在50人以内. 嘿嘿,网上找不到答案,自己写出来了,就贴上吧 c ...

最新文章

  1. day11 - 15(装饰器、生成器、迭代器、内置函数、推导式)
  2. linux过滤输出内容,Linux内容整理--过滤器、输入输出及管道
  3. matlab自定义窗口名
  4. 网络html代码是什么问题,html代码问题
  5. 2015春浙江省二级c语言,2015-2015年浙江省高校计算机等级考试二级C试题.doc
  6. 面试官:什么是大事务?小林哥:就是 很大...的...事务??
  7. 数据结构与算法LeetCode题目索引
  8. python破解压缩包密码(密码字典)
  9. VirtualBox添加USB 3.0控制器扩展
  10. 【读万卷书】《哪有没时间这回事》
  11. Studio 3T 破解 mogodb
  12. 苹果计算机怎么显示桌面,苹果mac电脑快速显示桌面及切换应用的详细教程
  13. 同济大学核心学术刊物基本目录_党建丨清华大学建筑学院、同济大学建筑与城市规划学院研究生党支部联合举办“城乡二元关系与生态文明建设内涵”主题党日活动...
  14. 张艾迪(创始人):世界前三大互联网公司
  15. 操作系统底层工作的整体认识
  16. 超哥笔记--shell 基本命令(4)
  17. 重庆顶味香手把手教你做重庆肥肠面!几个小妙招秒杀路边面馆
  18. 2019ICPC秦皇岛I Invoker
  19. Java多线程编程:Callable、Future和FutureTask浅析(多线程编程之四)
  20. 关于微信小程序API——wx.getLocation定位不准的问题

热门文章

  1. opentcs 如何汉化
  2. 这周心情起伏有点大。。。
  3. 【虚幻引擎UE】UE5 材质动态修改的2种方法(含工程源码)
  4. el属性和template属性的关系
  5. excel可以做神经网络分析吗,用excel构建神经网络
  6. 微信5.0绑定银行卡教程
  7. mysql之模糊查询的方法
  8. 设计模式之动态代理模式
  9. machine learning week1-model Representation
  10. 单位、家庭建筑物电气、电子设备防雷举措