首页 > 数据库 >关于mysql自增id的获取和重置

关于mysql自增id的获取和重置

时间:2022-08-26 17:45:39浏览次数:164  
标签:自增 mysql table new id reseed

mysql获取自增id的几种方法
使用max函数:select max(id) from tablename
优点:使用方便快捷。
缺点:获取的不是真正的自增id,是表中最大的Id,如果有删除数据的话,那么该值和自增id相差比较大。如果有连表数据,有可能导致数据错乱。
使用LAST_INSERT_ID函数:select LAST_INSERT_ID()
优点:获取到的是真正的自增id。
缺点:该函数是与table无关的,永远保留最新插入的自增列的id。如果多客户端操作,而且不能保证原子性,这个值可能会出现错误。所以需要在插入之后调用。
使用@@IDENTITY变量:select @@IDENTITY
此方法和LAST_INSERT_ID()功能差不多,优缺点也一致。需要在插入后调用。
使用mysql查询函数:SHOW TABLE STATUS;
优点:能够准确的查到自增id。而且可以在语句后面加上where语句或者like语句来过滤。
缺点:该语句返回的是一个记录集,不能单独的返回自增值。所以需要额外的操作来获取。
使用自定义查询方法:mysql表相关的信息是放在information_schema表里。所以我们参考 SHOW TABLE STATUS来构建查询语句。如:
select Auto_increment into autoId from information_schema.tables where Table_Schema = ‘dbname’ and table_name = ‘tablename’;
优点:高度自定义,能够准确的得到想得到的任何信息。
确定:不容易记住。呵呵。
mysql自增id的重置
使用truncate:truncate table;
说明:使用truncate会删除表的数据释放空间,并且重置字自增id,但不会删除表的定义。
用处:需要清空表的时候才能使用。
使用修改标识:dbcc checkident (‘table_name’ , reseed, new_reseed_value) ;
说明:new_reseed_value是设置的当前标识,下次插入则从new_reseed_value+1开始。如果new_reseed_value小于表中当前标识的值,有可能会产生重复key,会产生 2627 号错误信息。
用处:此方法不会清空已有数据。适用于大量删除后修改新的标识,但不能比当前表中最大值小。
使用修改表的方法:alter table tablename auto_increment=new
说明:此方法和上面的二方法类似。也不会清空数据,有可能会出现重复key的可能,所以此方法也只适用于清空表之后重置自增id或者大量删除后修改自增id。

————————————————
版权声明:本文为CSDN博主「帘卷西风」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ljxfblog/article/details/47355347

标签:自增,mysql,table,new,id,reseed
From: https://www.cnblogs.com/jmbt/p/16628377.html

相关文章

  • mysql开启日志功能
    今天中午,经理过来说把项目的日志功能给开开,方便以后查看性能,一开始是他弄,嘿,转项目经理久了,技术就难免生疏了,就说了下怎么怎么弄。他走后,我便集中精力搞这个了,以前没弄过,于......
  • java springboot 初体验 (十一)对接mysql
    上一篇javaspringboot初体验(十)对接uthttps://www.cnblogs.com/zwjvzwj/p/16616151.htmlpom文件添加依赖数据库依赖<!--alibabadruiddatasour......
  • devexpress 22.1.3 PivotGrid 结合.net6 MVC
       效果图  主页面[email protected]@usingHealth.Repository;@*FormoreinformationonenablingMVCforemptyprojects......
  • 【Java】使用Druid连接池的监控面板排查慢SQL
     默认在后台服务的地址:http://localhost:8078/druid/login.html账号信息放在配置文件中获取:server:port:8078spring:datasource:druid:......
  • mysql查询结果输出到文件
    方法一:直接执行命令:mysql> selectcount(1)fromtable intooutfile'/tmp/test.xls';QueryOK,31rowsaffected(0.00sec)在目录/tmp/下会产生文件test.xls遇到的......
  • Mysql 自定义随机字符串
    Mysql自定义随机字符串-搬砖工奶爸-博客园 https://www.cnblogs.com/--net/p/5784371.html 前几天在开发一个系统,需要用到随机字符串,但是mysql的库函数有没有直......
  • MySQL数据库工具-SQLYog快捷键大全
    Ctrl+M  创建一个新的连接Ctrl+N  使用当前设置新建连接Ctrl+F4  断开当前连接对象浏览器F5  刷新对象浏览器(默认)Ctrl+B  设置焦点于对象浏览器SQL窗......
  • MAUI Android Splash
    MAUI的Splash可以直接在Resources/Splash文件夹下直接更改,参阅官方文档https://docs.microsoft.com/zh-cn/dotnet/maui/user-interface/images/splashscreen?tabs=ios......
  • 关于我在.net core6时JWT 出现错误:IDX10653
      IDX10653:Theencryptionalgorithm'System.String'requiresakeysizeofatleast'System.Int32'bits.Key'Microsoft.IdentityModel.Tokens.Symmetr......
  • MySQL主从安装
    mysql5.7 wget-i-chttp://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpmyum-yinstallmysql57-community-release-el7-10.noarch.rpmyum-......