zoukankan      html  css  js  c++  java
  • SQL Server获取自增列的下一个id和重置自增列的初始化值

    我们经常在sql server创建表,其中有个列都是设置自增列(id为主键,标识种子:1,标识增量:1)

    但是今天不知道什么原因,今天新增、修改操作都报主键重复,由于我们这个表的自增的,所以不好检查是新增到那个id值导致的。

    sql server有内置函数方法,我们可以查询某个表自增列自增到那个值

    --查询某个表自增列的最大标识值,语法如下
    SELECT IDENT_CURRENT('TableName');
    
    --查询某个表自增类的标识值增量,语法如下:
    SELECT IDENT_INCR('TableName');
    
    --查询某个表自增列的下个标识值,语法如下:
    SELECT IDENT_CURRENT('TableName') + IDENT_INCR('TableName');

    实际上使用将tableName替换成你自己新建的表名就可以(前提是该表已建立自增列),如下:

    --查询指定表(按钮表)的自增列的下个标识值,语法如下:
    SELECT IDENT_CURRENT('ax_action') + IDENT_INCR('ax_action');

    好了,我们查找到自增列下个标识值(23),跟数据表最大id值(228)进行比较,发现数据表存在id为23记录,所有导致报主键重复问题

    --查询指定数据表的最新Uid
    select Max(id) from ax_action;

     最后,我们要修改下,系统表内置函数下个标识值重置为329,如何做呢?

    --重置指定表的自增列最大标识值,语法如下:
    dbcc checkident(tableName,reseed,maxVal);

    将tableName替换成我们要修复数据表,maxVal替换成重置后的初始值,如下:

    --重置指定表(按钮表)的自增列最大标识值为329,语法如下:
    dbcc checkident(ax_action,reseed,328);

    在调用系统内置函数获取指定表自增列的下个标识值

    --重置指定表(角色表)的自增列最大标识值为329,语法如下:
    dbcc checkident(ax_action,reseed,328);
    --查询指定表(按钮表)自增列的下一个标识值
    SELECT IDENT_CURRENT('ax_action') + IDENT_INCR('ax_action');

    最后,出现数据表id值与系统内置自增列最大标识值不一样问题也找到了,就是数据表的数据是通过导入进来的(导入数据之前,把原先自增列的标识规范关掉了)

    参考网站:

    https://www.bbsmax.com/A/6pdDWPL5w3/

    https://blog.csdn.net/wxw_317/article/details/7920591

    平时多记记,到用时才能看看,记录你的进步,分享你的成果
  • 相关阅读:
    比较器
    堆排序
    快速排序
    荷兰国旗问题
    python查漏补缺 --- 基础概念及控制结构
    redis 交集、并集、差集
    spark问题
    IDEA写scala简单操作
    hive 中遇到的正则
    scala模式匹配
  • 原文地址:https://www.cnblogs.com/xielong/p/15719976.html
Copyright © 2011-2022 走看看