Я присоединился к проекту, который использовал случайные числа, генерируемые клиентской стороной, для полей первичного ключа в базе данных mysql. Эти поля первичных ключей являются автоматическим приращением, но не используются как таковые.Пользовательский автоинкремент Mysql для исправления случайных идентификаторов
Я думаю, что это было сделано, потому что разработчик не знал, как получить идентификатор, сгенерированный с помощью базы данных после вставки.
Теперь у нас есть разреженный массив значений id во многих таблицах и значительное количество ключевых столкновений при вставке.
Есть ли какая-то исправляющая работа, которую я могу сделать, чтобы база данных могла генерировать идентификаторы (например, начать с последнего выделенного идентификатора и найти следующий доступный идентификатор) и для следующего вызова JDBC?
numero = stmt.executeUpdate(query, Statement.RETURN_GENERATED_KEYS);
Чтобы иметь возможность предложить вам что-то практическое, вам нужно быть более конкретным и начать с публикации текущей схемы таблиц и указать, какой движок вы используете в настоящее время. – peterm
@peterm. Хорошо, спасибо. В db содержится около 120 таблиц (для многих для перечисления), каждая таблица сущностей содержит единственный первичный ключ суррогата, который обычно является int (10) ненулевым auto_increment. Цель db - mysql 5.1.69. Иды «хорошо» распределены по диапазону идентификаторов, а также большие пробелы. Клиент jdbc является текущим. Существующий код страшен многими ошибками и связанными с этим проблемами качества данных. Я ищу архитектурный совет, который будет работать. Например. реализовать сохраненный процесс, обновить это поле метаданных последнего id mysql и т. д. Надеясь, что кто-то встретил это раньше и зафиксировал его? – karu