auto_increment по группе
-
21-08-2019 - |
Вопрос
Есть ли способ с MySQL (в частности, 5.0) иметь поле auto_increment, значение которого основано на столбце группировки?
Пример:
id name group_field
1 test 1
2 test2 1
1 test3 2
2 test4 2
1 test5 3
2 test6 3
Мне бы не хотелось прибегать к каким-либо «сумасшедшим» методам, чтобы добиться этого, но при необходимости я сделаю это.
Решение
Для таблиц MyISAM и BDB вы можете иметь автоматическое приращение поле как второстепенная часть ключа, например.
CREATE TABLE foo (
id INT AUTO_INCREMENT NOT NULL,
group_field INT NOT NULL,
name VARCHAR(128),
PRIMARY KEY(group_field, id)
);
Вот что руководство говорит об этом
В этом случае сгенерированное значение для столбца Auto_Increment рассчитывается как max (auto_increment_column) + 1, где префикс = данный профикс.Это полезно, когда вы хотите поместить данные в упорядоченные группы.
Другие советы
Вы думали о составные первичные ключи?
Вы можете добиться этого с помощью триггера при вставке, установив max(id) из группы таблиц с помощью group_field, имеющего group_fileld = @inserted_group;