Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL에서 auto_increment(정수)의 한계는 무엇입니까?

<시간/>

auto_increment 정수의 제한은 열 데이터 유형에 따라 다릅니다. 다음과 같이 표시됩니다.

The data type TINYINT range is 127
The data type UNSIGNED TINYINT range is 255
The data type SMALLINT range is 32767
The data type UNSIGNED SMALLINT range is 65535
The data type MEDIUMINT range is 8388607
The data type UNSIGNED MEDIUMINT range is 16777215
The data type INT range is 2147483647
The data type UNSIGNED INT range is 4294967295
The data type BIGINT range is 9223372036854775807
The data type UNSIGNED BIGINT range is 18446744073709551615

TINYINT의 예를 들어보겠습니다. 127을 넘으면 MySQL에서 오류가 발생합니다.

먼저 테이블을 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같다. 여기서 ID는 auto_incement입니다.

mysql> create table LimitOfAutoIncrement
   -> (
   -> Id TINYINT NOT NULL AUTO_INCREMENT,
   -> PRIMARY KEY(Id)
   -> );
Query OK, 0 rows affected (0.68 sec)

TINYINT에 auto_increment의 제한인 127개의 레코드만 삽입하십시오. 쿼리는 다음과 같습니다.

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 |
|  11 |
|  12 |
|  13 |
|  14 |
|  15 |
|  16 |
|  17 |
|  18 |
|  19 |
|  20 |
|  21 |
|  22 |
|  23 |
|  24 |
|  25 |
|  26 |
|  27 |
|  28 |
|  29 |
|  30 |
|  31 |
|  32 |
|  33 |
|  34 |
|  35 |
|  36 |
|  37 |
|  38 |
|  39 |
|  40 |
|  41 |
|  42 |
|  43 |
|  44 |
|  45 |
|  46 |
|  47 |
|  48 |
|  49 |
|  50 |
|  51 |
|  52 |
|  53 |
|  54 |
|  55 |
|  56 |
|  57 |
|  58 |
|  59 |
|  60 |
|  61 |
|  62 |
|  63 |
|  64 |
|  65 |
|  66 |
|  67 |
|  68 |
|  69 |
|  70 |
|  71 |
|  72 |
|  73 |
|  74 |
|  75 |
|  76 |
|  77 |
|  78 |
|  79 |
|  80 |
|  81 |
|  82 |
|  83 |
|  84 |
|  85 |
|  86 |
|  87 |
|  88 |
|  89 |
|  90 |
|  91 |
|  92 |
|  93 |
|  94 |
|  95 |
|  96 |
|  97 |
|  98 |
|  99 |
| 100 |
| 101 |
| 102 |
| 103 |
| 104 |
| 105 |
| 106 |
| 107 |
| 108 |
| 109 |
| 110 |
| 111 |
| 112 |
| 113 |
| 114 |
| 115 |
| 116 |
| 117 |
| 118 |
| 119 |
| 120 |
| 121 |
| 122 |
| 123 |
| 124 |
| 125 |
| 126 |
| 127 |
+-----+
127 rows in set (0.00 sec)

이제 auto_increment에 대한 레코드를 삽입할 수 없습니다. 시도하면 오류가 생성됩니다.

mysql> insert into LimitOfAutoIncrement values();
ERROR 1062 (23000): Duplicate entry '127' for key 'PRIMARY'