Вопрос

Есть ли способ с 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;

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top