MyISAM允許非常方便的創建連續數據。 例如在該表中的主鍵是ID + SEQ(-uence)MySQL自動增量InnoDB像MyISAM
id seq
1 1 insert into table(seq) values(1),(2),(3),(1),(2),(1),(1),(2);
1 2
1 3
2 1
2 2
3 1
4 1
4 2
所以邏輯是當ID保持不變直到出現複製鍵,在這種情況下(MyISAM的)將遞增編號。
但是,當我嘗試在InnoDB中使用它 - 不起作用。有沒有解決方法(因爲我需要交易)?
謝謝。
可能是從評論帖由[未公佈姓名]的MySQL手冊更好的例子,在2003年10月23日下午8時41分
create table location
(
id bigint not null auto_increment, -- "serial" per 4.1
longitude int,
latitude int,
place int,
primary key(id, longitude, latitude, place)
);
insert into location (longitude, latitude, place)
values (0,0,0), (1,1,1), (2,2,2);
select * from foo;
+----+-----------+----------+-------+
| id | longitude | latitude | place |
+----+-----------+----------+-------+
| 1 | 0 | 0 | 0 |
| 2 | 1 | 1 | 1 |
| 3 | 2 | 2 | 2 |
+----+-----------+----------+-------+
drop table location;
create table location
(
id bigint not null auto_increment, -- "serial" per 4.1
longitude int,
latitude int,
place int,
primary key(longitude, latitude, place, id)
);
insert into location (longitude, latitude, place)
values (0,0,0), (1,1,1), (2,2,2), (0,0,0);
select * from location order by id;
+----+-----------+----------+-------+
| id | longitude | latitude | place |
+----+-----------+----------+-------+
| 1 | 0 | 0 | 0 |
| 1 | 1 | 1 | 1 |
| 1 | 2 | 2 | 2 |
| 2 | 0 | 0 | 0 |
+----+-----------+----------+-------+
我假設你說的是主鍵複合時MyISAM的功能。如果是這樣的話,不需要 - InnoDB沒有這種功能。解決方法 - 消除auto_increment,編寫自己的計算密鑰的過程 - 基本上,一個巨大的麻煩。 – 2011-06-17 13:39:13