MySQL的auto_increment(整型)的限制是多少?

MySQL的auto_increment(整型)的限制是多少?

MySQL是一种常用的关系型数据库管理系统,auto_increment是MySQL中用于自增列值的关键字,经常用于生成表中某一列的唯一标识符。那么,MySQL的auto_increment(整型)到底有哪些限制呢?

阅读更多:MySQL 教程

限制一:最大值

MySQL 5.7版本之前的auto_increment整形列所能存储的最大值为2^32-1,即4294967295。在这个值之后,auto_increment值会从1重新开始计数。

示例代码:

CREATE TABLE `limitDemo` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 插入数据
INSERT INTO `limitDemo` (`name`) VALUES ('Tom');

限制二:类型

auto_increment只能用于整型列,如果表中存在其他类型的列,比如字符串列或者日期列,就无法使用auto_increment属性生成唯一标识符。

示例代码:

CREATE TABLE `typeDemo` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL DEFAULT '',
  `date` date NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 插入数据
INSERT INTO `typeDemo` (`name`,`date`) VALUES ('Tom','2022-08-01');

限制三:具有唯一性

auto_increment生成的数值必须是唯一的,并且不能为NULL,否则会导致插入数据失败。

示例代码:

CREATE TABLE `uniqueDemo` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 插入数据,将会成功
INSERT INTO `uniqueDemo` (`name`) VALUES ('Tom');

-- 再次插入相同的数据,将会失败
INSERT INTO `uniqueDemo` (`name`) VALUES ('Tom');

限制四:非负数

auto_increment生成的数值必须为非负数,不能为负数,否则会导致插入数据失败。

示例代码:

CREATE TABLE `nonNegativeDemo` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `num` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 尝试插入负数,将会失败
INSERT INTO `nonNegativeDemo` (`num`) VALUES (-1);

限制五:不可重置

auto_increment生成的数值是递增的,不能将当前已生成的自增数值进行重置,否则会导致生成的自增数值与已生成的数值冲突。

示例代码:

CREATE TABLE `notResetDemo` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 插入数据
INSERT INTO `notResetDemo` (`name`) VALUES ('Tom');

-- 重置自增数值,将会失败 
ALTER TABLE `notResetDemo` AUTO_INCREMENT = 1;

结论

综上所述,MySQL的auto_increment(整型)有以下限制:

  1. 最大值为2^32-1,即4294967295;
  2. 只能用于整型列;
  3. 生成的数值必须唯一,并且不能为NULL;
  4. 生成的数值必须为非负数;
  5. 不能重置已生成的自增数值。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程