MyISAM позволяет очень удобный способ создания сериалов.Например, в таблице первичным ключом является id + seq (-uence)
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
Таким образом, логика заключается в том, что когда идентификатор остается прежним, пока не появится дубликат ключа, в этом случае (MyISAM) будет увеличиваться идентификатор.
Но когда я пытаюсь использовать его в InnoDB - не работает.Есть ли обходной путь (потому что мне нужны транзакции)?
Спасибо.
Может быть лучшим примером из комментариев к Руководству по MySQL Опубликовано [имя не разглашается] 23 октября 2003 г. 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 |
+----+-----------+----------+-------+