MySQL的auto_increment(整型)的限制是多少?
auto_increment整数的限制取决于列数据类型。如下所示:
TINYINT 类型范围为127
UNSIGNED TINYINT 类型范围为255
SMALLINT 类型范围为32767
UNSIGNED SMALLINT 类型范围为65535
MEDIUMINT 类型范围为8388607
UNSIGNED MEDIUMINT 类型范围为16777215
INT 类型范围为2147483647
UNSIGNED INT 类型范围为4294967295
BIGINT 类型范围为9223372036854775807
UNSIGNED BIGINT 类型范围为18446744073709551615
让我们以TINYINT为例。如果您给出超过127,则MySQL会出现错误。
现在,让我们先创建一张表。创建表的查询语句如下。这里,ID是自动增量的:
mysql> create table LimitOfAutoIncrement
-> (
-> Id TINYINT NOT NULL AUTO_INCREMENT,
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.68 sec)
只插入127条记录,这是TINYINT的auto_increment限制。查询语句如下:
mysql> insert into LimitOfAutoIncrement values(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),();
Query OK, 127 rows affected (0.20 sec)
Records: 127 Duplicates: 0 Warnings: 0
使用select语句显示表中的所有记录。查询如下所示:
mysql> select *from LimitOfAutoIncrement;
以下是输出内容:
+-----+
| Id |
+-----+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
...
| 127 |
+-----+
127 rows in set (0.00 sec)
现在您不能为auto_increment插入记录。如果尝试,则会生成错误:
mysql> insert into LimitOfAutoIncrement values();
ERROR 1062 (23000): Duplicate entry '127' for key 'PRIMARY'
阅读更多:MySQL 教程
极客教程