Механизм автоинкрементации MySQL увеличивает только целые числа. Извините, это так, как это реализовано.
Лучший способ создать вашу таблицу Case
в MySQL заключается в следующем:
CREATE TABLE Cases (
case_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
client_id INT NOT NULL,
...other attributes of the case...
FOREIGN KEY (client_id) REFERENCES Client (client_id)
);
В ней будет один счетчик автоинкремента для таблица, и все клиенты должны будут поделиться этим номером. Это означает, что номера случаев не всегда будут последовательными для данного клиента, и они не будут начинаться с 1 для каждого клиента. Извините, так работает автоинкремент в MySQL.
Вопрос задавался много раз с некоторым изменением: "Как я могу сделать автоинкремент, который нумерует для каждой группы?" Вы можете прочитать MAX(case_id)
для данного клиента, для которого вам нужно вставить регистр, и затем использовать max case_id + 1 в вашей INSERT. Другими словами, забудьте об использовании функции автоинкремента и рассчитайте идентификатор самостоятельно.
При этом вы должны заблокировать стол, чтобы избежать условий гонки; два одновременно работающих пользователя могут вставлять одновременно и читать одно и то же значение для MAX (case_id) и пытаться вставить одно и то же значение.
Ваш план использования десятичных чисел приведет к проблемам.
Что если однажды у вас будет клиент с более чем 999 случаями? Вам придется переформатировать все ваши идентификаторы дел, не только для клиента с 1000 делами, но и для всех клиентов. Любые ссылки на идентификаторы дел, которые вы отправили в бумажных отчетах и отчетах, станут недействительными.
Как бы вы сделали запрос SQL для поиска всех дел для данного клиента ? Если бы у вас был client_id в его собственном столбце, это был бы запрос, подобный SELECT ... FROM Case WHERE client_id = 3
, но если вам нужно выполнить запрос, подобный ... WHERE case_id BETWEEN 3.000 AND 3.999
, это менее понятно и труднее оптимизировать. Также сложнее объяснить новому программисту, которого вы нанимаете для проекта. Если вы в конечном итоге расширите формат идентификатора до 4 цифр после запятой, вам придется переписать все эти SQL запросов.