У меня есть требование автоматического увеличения значения в 2 таблицах со ссылочной связью. Мое требование - вставить данные в две таблицы: - Таблица A = Rowid, другие столбцы Таблица B = Rowid, другие столбцы Мне нужно вставить данные из разных методов в обе таблицы. В настоящее время я выбрал этот подход: - a. Запросите максимальное значение из таблицы A и добавьте к нему 1. б. Вставьте данные в обе таблицы со значением, полученным на шаге 1, используя пакетное обновление. Однако недостатком подхода является то, что если два пользователя/потока вызывают этот метод одновременно, они могут получить одинаковое значение, и я получу референциальную ошибку целостности в таблице A, а таблица B будет иметь 2 строки с одинаковым идентификатором строки.
Я могу синхронизировать свой метод, чтобы избежать этого, однако у меня есть несколько разных методов, которые делают то же самое из-за некоторых других функций.
Идеальный способ сделать это - использовать автоматически сгенерированный столбец, но администратор базы данных не разрешает это. Кроме того, эта ссылочная целостность между двумя таблицами должна поддерживаться приложением, фактическое ограничение не разрешено администратором баз данных.
Я использую Spring jdbctemplate на стороне Java и DB2 на стороне базы данных. Однако проблема не зависит от poth.