如何取得SQL中自增伴位的下一个值
一般來說, 俱有 identity 屬性欄位的 table 的目前值可以很容易地利用 max 函數來取得. 不過, 也很有可能 max 該筆資料已被刪除了, 所以利用 max 查找出來的結果不正確.
但又若是要找出下一個 identity 的值呢? 就一定得知道漸增量 (increment) 為何了, 否則是沒有辦法計算出來的.
請先參考這篇文章: SQL Server的Identity欄位使用/複製/重設 http://diary.tw/tim/65 , 這篇文章中也有提到有關取得目前的 identity 值的方式, 是利用 dbcc checkident('table_name', NORESEED) 來取回, 不過取回來的是文字訊息 (text message), 而不是很方便程式化, 若要滿足前面的需求, 包含取回 identity 目前值及下一個, 則有現成的函數可用:
- IDENT_CURRENT: 取出 identity 欄位的目前值
- IDENT_INCR: 取出 identity 欄位的漸增值
- 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中自增伴位的下一个值相关推荐
- PL/SQL Developer 在windows7 64位系统下连Oaracle11g64位系统的解决经验
PL/SQL Developer 在windows7 64位系统下连Oaracle11g64位系统的解决经验 一.问题现象及解决方法 现象: 1.PL/SQL 无法登录64位数据库 2.在PL/SQL ...
- INNODB自增主键的一些问题 vs mysql获得自增字段下一个值
今天发现 批量插入下,自增主键不连续了....... InnoDB AUTO_INCREMENT Lock Modes This section describes the behavior of A ...
- mysql 主键 下一个值_INNODB自增主键的一些问题 vs mysql获得自增字段下一个值
root@localhost : test 04:23:28>show variables like 'innodb_autoinc_lock_mode'; +----------------- ...
- 微信小程序开发--如何在swiper中显示两个item以及下一个item的部分内容
如何在swiper中显示两个item以及下一个item的部分内容 我所实现的效果 我实现的代码 <!--图片轮播图--><!--要展示两个item 以及下一个item的部分内容,ci ...
- php 数组指向下一个值,比较数组值并根据自定义值(PHP)在数组中查找下一个值 - php...
我正在尝试比较数组中的值,然后根据所选值在数组中选择下一个值. 例如 array(05:11,05:21,05:24,05:31,05:34,05:41,05:44,05:50,05:54); 如果搜 ...
- 64位系统下一个32位的程序究竟可以申请到多少内存?
64位系统下一个32位的程序究竟可以申请到多少内存? cpu的位是指一次性可处理的数据量是多少,1字节=8位,32位处理器可以一次性处理4个字节的数据量,依次类推.32位操作系统针对的32位的CPU设 ...
- 获取mysql 自增id 和mysql 下一个自增id的方法
mysql获取表中自增id的方法: 1. 使用 select MAX(id) from tablename; 获取的是表中最大的id:顺序执行 insert ---> delete 插入的数据 ...
- 窗体中实现按 回车键 跳到下一个可选的TabIndex控件
Form中一"textbox",两"button",如何实现在textbox中按下回车响应button.click事件 : 1)把按钮的tabindex依次设置 ...
- 关于SQL中的ASSERTION(某单位想举行一个小型的联谊会……)
某单位想举行一个小型的联谊会,关系male记录注册的男嘉宾的信息,关系female记录注册的女嘉宾的信息,建立一个断言,将来宾的人数限制在50人以内. 嘿嘿,网上找不到答案,自己写出来了,就贴上吧 c ...
最新文章
- day11 - 15(装饰器、生成器、迭代器、内置函数、推导式)
- linux过滤输出内容,Linux内容整理--过滤器、输入输出及管道
- matlab自定义窗口名
- 网络html代码是什么问题,html代码问题
- 2015春浙江省二级c语言,2015-2015年浙江省高校计算机等级考试二级C试题.doc
- 面试官:什么是大事务?小林哥:就是 很大...的...事务??
- 数据结构与算法LeetCode题目索引
- python破解压缩包密码(密码字典)
- VirtualBox添加USB 3.0控制器扩展
- 【读万卷书】《哪有没时间这回事》
- Studio 3T 破解 mogodb
- 苹果计算机怎么显示桌面,苹果mac电脑快速显示桌面及切换应用的详细教程
- 同济大学核心学术刊物基本目录_党建丨清华大学建筑学院、同济大学建筑与城市规划学院研究生党支部联合举办“城乡二元关系与生态文明建设内涵”主题党日活动...
- 张艾迪(创始人):世界前三大互联网公司
- 操作系统底层工作的整体认识
- 超哥笔记--shell 基本命令(4)
- 重庆顶味香手把手教你做重庆肥肠面!几个小妙招秒杀路边面馆
- 2019ICPC秦皇岛I Invoker
- Java多线程编程:Callable、Future和FutureTask浅析(多线程编程之四)
- 关于微信小程序API——wx.getLocation定位不准的问题