У меня есть таблица со столбцом ID
(НОМЕР) и столбцом PARENT_ID
(номер).При вставке новых данных новый идентификатор должен быть сгенерирован с использованием MAX(ID) + 1
ЕСЛИ результат [MAX (ID) + 1] не существует в другом столбце (PARENT_ID
).
Таким образом, данные должны бытьв столбце ID
должно быть первое наибольшее число из MAX (ID), которое недоступно в столбце PARENT_ID
.
Я пытаюсь добиться этого без создания хранимой процедуры изэто (если возможно).
У меня есть запрос на выборку, который проверяет, присутствует ли следующий столбец с наибольшим номером столбца ID в столбце PARENT_ID
, и возвращает его, если его нет.
Однако я не уверен, как дополнить запрос, чтобы включить сценарий, в котором MAX(ID) + 1
присутствует в PARENT_ID
.Как проверить следующее наибольшее значение?
Это мой запрос:
SELECT
CASE
WHEN MAX(ID) + 1 NOT IN (SELECT DISTCINT PARENT_ID FROM CarteTable)
THEN MAX(ID) + 1
END
FROM CarteTable;
Это моя таблица:
ID PARENT_ID
--------------------
1 2
2 3
4 5
Мой запрос возвращаетничего в этом случае.
Когда я запускаю запрос, мне нужно, чтобы он возвращал 6 как MAX (ID) + 1, т. е. 5 присутствует в PARENT_ID.Как я могу дополнить свой запрос, чтобы выполнить это?