其实挺难的
CREATE TABLE USER_TB (ID INT Auto_inCREMENT Primary KEY,
NICKNAME varchar(50)
,USER_LV INT ,
EXP BIGINT)
INSERT INTO USER_TB (ID,NICKNAME,USER_LV,EXP) VALUES (NULL,'test1',1,0),(NULL,'test2',1,0),(NULL,'test3',1,0),(NULL,'test4',1,0),
(NULL,'test5',1,0),(NULL,'test6',1,0),(NULL,'test7',1,0),(NULL,'test8',1,0),
(NULL,'test9',1,0),(NULL,'test10',1,0),(NULL,'test11',1,0),(NULL,'test12',1,0);
SELECT LAST_INSERT_ID();
| LAST_INSERT_ID() |
| ---------------: |
| 1 |
INSERT INTO USER_TB VALUES (NULL,'test13',1,0),(NULL,'test14',1,0)
SELECT LAST_INSERT_ID();
| LAST_INSERT_ID() |
| ---------------: |
| 13 |
SELECT * FROM USER_TB;
身份证 |昵称 | USER_LV |经验值
-: | :------- | ------: | --:
1 |测试1 | 1 | 0
2 |测试2 | 1 | 0
3 |测试3 | 1 | 0
4 |测试4 | 1 | 0
5 |测试5 | 1 | 0
6 |测试6 | 1 | 0
7 |测试7 | 1 | 0
8 |测试8 | 1 | 0
9 |测试9 | 1 | 0
10 |测试10 | 1 | 0
11 |测试11 | 1 | 0
12 |测试12 | 1 | 0
13 |测试13 | 1 | 0
14 |测试14 | 1 | 0
db小提琴here
你的插入有什么不同的是第一个
(1,'test1',1,0)
所以 mysql 计数 +1 所以它似乎跳过了 1 个数字
如果我把它作为第一个插入
(2,'test1',1,0)
它从 2 开始,在第一个 INSERT 结束时“跳过”2,因为在他的内部计数器中,他有 14 (12 + 2)
CREATE TABLE USER_TB (ID INT Auto_inCREMENT Primary KEY,
NICKNAME varchar(50)
,USER_LV INT ,
EXP BIGINT)
INSERT INTO USER_TB (ID,NICKNAME,USER_LV,EXP) VALUES (2,'test1',1,0),(NULL,'test2',1,0),(NULL,'test3',1,0),(NULL,'test4',1,0),
(NULL,'test5',1,0),(NULL,'test6',1,0),(NULL,'test7',1,0),(NULL,'test8',1,0),
(NULL,'test9',1,0),(NULL,'test10',1,0),(NULL,'test11',1,0),(NULL,'test12',1,0);
SELECT LAST_INSERT_ID();
| LAST_INSERT_ID() |
| ---------------: |
| 3 |
INSERT INTO USER_TB VALUES (NULL,'test13',1,0),(NULL,'test14',1,0)
SELECT LAST_INSERT_ID();
| LAST_INSERT_ID() |
| ---------------: |
| 15 |
SELECT * FROM USER_TB;
身份证 |昵称 | USER_LV |经验值
-: | :------- | ------: | --:
2 |测试1 | 1 | 0
3 |测试2 | 1 | 0
4 |测试3 | 1 | 0
5 |测试4 | 1 | 0
6 |测试5 | 1 | 0
7 |测试6 | 1 | 0
8 |测试7 | 1 | 0
9 |测试8 | 1 | 0
10 |测试9 | 1 | 0
11 |测试10 | 1 | 0
12 |测试11 | 1 | 0
13 |测试12 | 1 | 0
15 |测试13 | 1 | 0
16 |测试14 | 1 | 0
db小提琴here
所以从(NULL,'test1',1,0) 开始,一切都按预期进行