Я хочу запустить последовательность для каждого клиента, чтобы у каждого из них была серия идентификаторов, начиная с 1:
Clients:
+----+-------+
| id | name |
+----+-------+
| 1 | Dave |
| 2 | Sarah |
+----+-------+
Tickets:
+----+-----------+----------+----------------------------+
| id | clientID | sequence | title |
+----+-----------+----------+----------------------------+
| 1 | 1 | 1 | Title 1 |
| 2 | 1 | 2 | Another title for Client 1 |
| 3 | 2 | 1 | Different Title |
+----+-----------+----------+----------------------------+
Каков наилучший способ сделать это (с точки зрения скорости и целостности данных)?У меня есть что-то вроде этого при вставке:
Добавить новый билет для Дэйва
SELECT COALESCE( (MAX(sequence) + 1), 1) as nextSeq WHERE id = 1 FROM tickets
затем
INSERT INTO tickets (... sequence) VALUES (... nextSeq)
Зачем нужен COALESCE?
Когда запись является первой в своей серии, MAX () будет возвращаться пустым, поэтому по умолчанию пустым будет 1.
Почему мне нужен порядковый номер в пользовательской области?
Это система захвата документов, отображающая множество табличных данных, у меня есть несколько объектов;Система, риск, тикет, процесс и я использую числа с названиями, чтобы помочь пользователям отслеживать свои записи.Хотя в таблицах первоначальный результат будет упорядочен по этому идентификатору, следовательно, я не хочу нумерацию глобальных идентификаторов.Я оставляю столбец auto_incremented для других внутренних операций, объединений, личных ссылок и т. Д.