Я пытаюсь увидеть, существует ли что-то для создания последовательности с логикой разбиения.Мне нужен порядковый номер, который зависит от другого первичного ключа, например:
id_person sequence id
1 | 1
1 | 2
2 | 1
3 | 1
1 | 3
, поэтому последовательность должна зависеть от раздела id_person
.Есть ли что-то подобное в oracle, или я должен реализовать это сам на уровне приложения?
спасибо.
Привет, я создал этот пакет и функцию PLSQL один:
PROCEDURE INIT_SEQUENCE(NAME varchar2, pkColumnNameList PARTITIONED_SEQUENCE_PK_COLUMN);
FUNCTION GET_NEXT_SEQUENCE_VALUE(NAME varchar2, pkPartitionColValue PARTITIONED_SEQUENCE_COL_VALUE) RETURN NUMBER;
INIT_SEQUENCE - получить на входе имя, которое будет связано с последовательностью, и список имен столбцов, которые являются фиксированной первичной ключевой частью, которая объединяет последовательность Пример: 'ID_PERSON'
работаэта процедура должна создать таблицу, которая будет управлять приращением последовательности в соответствии со столбцом pkColumnNameList.
GET_NEXT_SEQUENCE_VALUE - получить имя приращения последовательности и значение первичного ключа pkColumnNameList и выполнить следующий шаг: 1) Создатьдинамически SQL для работы 2) dbms_lock.allocate_unique ();заблокировать таблицу 3) проверить, есть ли запись в таблице для значения pk на входе 4) если запись присутствует, обновить запись с максимумом + 1 в столбце последовательности 5) если запись отсутствует, вставить новую записьс 1 в столбце последовательности 6) вернуть новый идентификатор;
Я хотел бы получить комментарий об этом заранее спасибо ...