Хобрук: Ваш путь к мастерству в программировании

автоматически увеличивать идентификатор таблицы с новыми дочерними вставками

Я заполнил свою целевую таблицу с помощью приложения ETL в соответствии с нашими бизнес-требованиями. Эта целевая таблица имеет 5 «уровней», и для каждого из этих уровней я должен вставить соответствующие «дочерние» данные. Вот мой сценарий для выбора «дочерних» данных для вставки (имейте в виду, что есть и другие столбцы, но приведенный ниже сценарий просто показывает, как я перебираю таблицу, чтобы определить 5 уровней:

select
code_test_data + 200 as CODE_test_data_child,
test_data from targetTable
where level_test_data in (select level from dual t connect by level <=5)
order by level_test_data

цель состоит в том, чтобы выполнить сценарий sql для вставки дочерних данных после того, как мое приложение etl вставит первичные данные.

Мой вопрос:

Как будет управляться столбец id целевой таблицы для «дочерних» вставок? столбец идентификатора для основной вставки управляется моим приложением etl. Я думаю о нескольких подходах:

1) создайте функцию, которая вернет max(id)+1. Итак, для каждой вставки я могу вызвать эту функцию, чтобы добавить идентификатор

2) Последовательность: используйте функцию последовательности Oracle, чтобы добавить максимальный идентификатор. Но мне пришлось бы «жестко» закодировать начальное значение последовательности. Начальное значение будет получено из max(id) целевой таблицы. Я действительно не хочу жестко кодировать начальное значение

3) Я попытался использовать max(id)+1 в своей вставке в (col1,col2..) select max(id)+1.. но это просто увеличило идентификатор каждой строки на 1.

Кто-нибудь может поделиться лучшими решениями, пожалуйста?

огромное спасибо

РЕДАКТИРОВАТЬ:

После вставки первичных данных я вставлю дочерние данные, но идентификаторы дочерних вставок должны быть max(id)+1: Пример: row1=1, primaryTest1, level1... row2= 2, primaryTest2, Level2 ...newinserts=3, childTest1 | 4, childTest1 | 5, childTest2 | 6, childTest2 ...Я надеюсь, что этот пример прояснит мой вопрос.

18.10.2017


Ответы:


1

Я нашел решение своего вопроса. Этот постпомог мне

Вот мое решение (если это может помочь кому-то другому):

1) Создайте мою последовательность, используя начальное значение из max (id) моей целевой таблицы. разместить ссылку

2) Создайте процедуру, которая вызывает эту последовательность для вставки моего идентификатора, включая дочерние значения в моем операторе выбора:

select
seq_name.nextval,
code_test_data + 200 as CODE_test_data_child,
test_data from targetTable
where level_test_data in (select level from dual t connect by level <=5)
order by level_test_data

Спасибо

18.10.2017
Новые материалы

Dall-E 2: недавние исследования показывают недостатки в искусстве, созданном искусственным интеллектом
DALL-E 2 — это всеобщее внимание в индустрии искусственного интеллекта. Люди в списке ожидания пытаются заполучить продукт. Что это означает для развития креативной индустрии? О применении ИИ в..

«Очень простой» эволюционный подход к обучению с подкреплением
В прошлом семестре я посетил лекцию по обучению с подкреплением (RL) в моем университете. Честно говоря, я присоединился к нему официально, но я редко ходил на лекции, потому что в целом я нахожу..

Освоение информационного поиска: создание интеллектуальных поисковых систем (глава 1)
Глава 1. Поиск по ключевым словам: основы информационного поиска Справочная глава: «Оценка моделей поиска информации: подробное руководство по показателям производительности » Глава 1: «Поиск..

Фишинг — Упаковано и зашифровано
Будучи старшим ИТ-специалистом в небольшой фирме, я могу делать много разных вещей. Одна из этих вещей: специалист по кибербезопасности. Мне нравится это делать, потому что в настоящее время я..

ВЫ РЕГРЕСС ЭТО?
Чтобы понять, когда использовать регрессионный анализ, мы должны сначала понять, что именно он делает. Вот простой ответ, который появляется, когда вы используете Google: Регрессионный..

Не зря же это называют интеллектом
Стек — C#, Oracle Опыт — 4 года Работа — Разведывательный корпус Мне пора служить Может быть, я немного приукрашиваю себя, но там, где я живу, есть обязательная военная служба на 3..

LeetCode Проблема 41. Первый пропущенный положительный результат
LeetCode Проблема 41. Первый пропущенный положительный результат Учитывая несортированный массив целых чисел, найдите наименьшее пропущенное положительное целое число. Пример 1: Input:..