[英]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.