簡體   English   中英

MySQL INSERT .. UPDATE中斷AUTO_INCREMENT嗎?

[英]MySQL INSERT .. UPDATE breaks AUTO_INCREMENT?

有以下兩個表:

create table lol(id int auto_increment, data int, primary key id(id));
create table lol2(id int auto_increment, data int, primary key id(id));

插入一些值:

insert into lol2 (data) values (1),(2),(3),(4);

現在使用select插入:

insert into lol (data) select data from lol2;

再來一遍:

insert into lol (data) select data from lol2;

現在看表:

select * from lol;

我收到:

+----+------+
| id | data |
+----+------+
|  1 |    1 |
|  2 |    2 |
|  3 |    3 |
|  4 |    4 |
|  8 |    1 |
|  9 |    2 |
| 10 |    3 |
| 11 |    4 |
+----+------+

我對4到8之間的差距感到困惑...是什么原因造成的,我該怎么做才能沒有差距? 非常感謝!

auto_increment不保證ID列中的增量為1。 而且它不能,因為一旦您處理並行事務,它總會中斷:

BEGIN                                  BEGIN
  INSERT INTO lol VALUES(...)            INSERT INTO lol VALUES(..)   
  ...                                    ...
COMMIT                                 ROLLBACK

數據庫應分配哪些ID? 它無法預先知道哪個事務將成功,哪些事務將被回滾。

如果您需要對記錄進行順序編號,則可以使用查詢返回該編號; 例如

SELECT COUNT(*) as position, lol.data FROM lol 
INNER JOIN lol2 ON lol.id < lol2.id 
GROUP BY lol.id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM