AUTO_INCREMENT

  • Post author:
  • Post category:其他


在使用AUTO_INCREMENT时,应注意以下几点:

1、AUTO_INCREMENT是数据列的一种属性,只适用于整数类型数据列。

2、设置AUTO_INCREMENT属性的数据列应该是一个正数序列,所以应该把该数据列声明为 UNSIGNED,这样序列的编号个可增加一倍。

id int unsigned primary key auto_increment

3、AUTO_INCREMENT数据列必须有唯一索引,以避免序号重复(即是主键或者主键的一部分)。 AUTO_INCREMENT数据列必须具备NOT NULL属性。

4、AUTO_INCREMENT数据列序号的最大值受该列的数据类型约束,如TINYINT数据列的最大编号 是127,如加上UNSIGNED,则最大为255。一旦达到上限,AUTO_INCREMENT就会失效。

  • 当auto_incement达到上限后,再次申请下一个id时,得到的值保持不变。主键值重复报错
  • 如果已经删除了部分数据,auto_increment仍旧从上次的值开始计数

5、当进行全表删除时,MySQL AUTO_INCREMENT会从1重新开始编号。这是因为进行全表操作 时,MySQL实际是做了这样的优化操作:先把数据表里的所有数据和索引删除,然后重建数据表。

  • delete from 表名称;会删除表中所有数据,但是auto_increment仍旧按照以前的计数继续 生成数据
  • 需要auto_increment从头开始进行计数则需要使用 truncate table 表名称 删除数据

如果想删除所有的数据行又想保留序列编号信息,可这样用一个带where的delete命令以抑制 MySQL的优化:delete from table_name where 1; 可用last_insert_id()获取刚刚自增过的值。



版权声明:本文为weixin_50518344原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。