У меня есть требование автоматического увеличения значения в 2 таблицах с ссылочным отношением. Мое требование состоит в том, чтобы вставить данные в две таблицы: - Таблица A = Rowid, другие столбцы Таблица B = Rowid, другие столбцы Мне нужно вставить данные из разных методов в обе таблицы. В настоящее время я придерживался такого подхода: - a. Запросите максимальное значение из таблицы A и добавьте 1 к нему. b. Вставьте данные в обе таблицы со значением, полученным на шаге 1, с помощью пакетного обновления. Однако недостаток с подходом заключается в том, что два пользователя/потоки одновременно называют этот метод, они могут иметь одинаковое значение, и я получаю ошибку ссылочной межстраничности в таблице A, а таблица B будет иметь 2 строки с одинаковым идентификатором строки.Вставьте max + 1 из одной таблицы в две разные таблицы в пакетном обновлении с java
Я могу синхронизировать мой метод, чтобы избежать этого, однако у меня есть несколько разных методов, которые делают то же самое из-за некоторых других функций.
Идеальный способ сделать это - использовать автогенерируемый столбец, но DBA не позволяет этого. Кроме того, эта ссылочная целостность между двумя таблицами должна поддерживаться приложением, фактическое ограничение не допускается администратором баз данных.
Я использую Spring jdbctemplate на стороне java и DB2 на стороне базы данных. Однако проблема не зависит от цели.
Пожалуйста, обратите внимание, я знаю, что есть много вопросов, похоже, похожи на это. Но теперь обновляется две таблицы, а также из внешнего процесса. – Panther
Я предполагаю, что использование уровней изоляции SEQUENCE или выше не является вариантом. Верный? –
@data_henrik right DBA просит обработать код приложения. – Panther