数据库id自动增长,数据不停的删除和插入,这样的话id字段会不断的变大,直到溢出?这个问题是怎么解决的?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库id自动增长,数据不停的删除和插入,这样的话id字段会不断的变大,直到溢出?这个问题是怎么解决的?相关的知识,希望对你有一定的参考价值。

这个看情况了,首先看看是不是有使用自增列的必要,如果有必要前期要有预见性,对于可能会出现溢出的情况,则尽量使用bigint类型,当然这个要多占用存储空间。如果删除操作比较规则,比如会定期删除较早的数据,那么可以在id即将溢出的时候重置种子,从头开始自增,如果不能循环使用id值得话只能在即将溢出的时候修改表,用更大的数据类型来作为自增列的类型,这个过程因为涉及大量的数据更新插入操作,速度会很慢,通常尽量避免。如果id快溢出了,最好新建一个表来存储新增的数据。 参考技术A 这个问题,您可以重新设置一下,Id的那个自动增长,保存一下在设置过来!这样自动生长的ID,又可以重新排序了! 参考技术B 你想的真深奥 我还真没这种思考深度 不过我觉得这种情况出现的可能性不是太高,,应为 字段类型是以 个数来做长度的 ,只要永远不超过字段的类型的个数就不会有这个问题。

如何查询出刚插入一条数据的id(id是自动增长的)

查出来后如何将其赋值给一个Long型的变量
mysql数据库,java语言
用insert into table_name () values ();刚插入了一条数据
现在想获得刚插入这条数据的id(id是自动增长的)
得到id后如何把它赋值给一个Long型的变量

你也不说是什么数据、什么程序设计语言,如果是PHP+MYSQL数据库,那么使用下面的函数可以获得你要的东西:

int mysql_insert_id ( [resource $link_identifier] );

例如:

<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Could not connect: " . mysql_error());
mysql_select_db("mydb");

mysql_query("INSERT INTO mytable (product) values (\'kossu\')");
printf ("Last inserted record has id %d\\n", mysql_insert_id());
?>

补充:
如果不是PHP语言,可以使用MYSQL的函数LAST_INSERT_ID() 来获取,例如insert into table_name () values ();插入数据后,可以用SELECT LAST_INSERT_ID() 获取这个ID,当然也可以在插入关联表的语句里面直接使用LAST_INSERT_ID()作为字段数值。
参考技术A 这条数据还有什么字段?用来作为where语句的条件
比如:select id from xx_biao where name='小明' (PS:比如你刚刚插入一个名字叫做小明的数据,此语句查出小明的ID)

以上是关于数据库id自动增长,数据不停的删除和插入,这样的话id字段会不断的变大,直到溢出?这个问题是怎么解决的?的主要内容,如果未能解决你的问题,请参考以下文章

用java代码获得自动增长的id。不用数据库的自动增长

mybatis怎样批量插入数据到oracle,就算id自动增长问题

sql插入数据问题

Mybatis 插入后返回数据库自动增长ID

mysql表主键从给定值开始自动增长是怎么回事?

mysql表主键从给定值开始自动增长是怎么回事?