Какая таблица Oracle использует последовательность?

Имея последовательность, я должен узнать, какой table.column получает свои значения. Насколько я знаю, Oracle не отслеживает эти отношения. Так, поиск для последовательности в исходном коде был бы единственным путем. Это правильно?

Кто-либо знает о некотором способе узнать эту связь между таблицами последовательности?

7
задан Brian Tompsett - 汤莱恩 30 October 2016 в 17:02
поделиться

5 ответов

В базе данных вы можете искать весь сохраненный код в вашей схеме следующим образом:

select type, name, line, text
from all_source
where owner = 'MYSCHEMA'
and upper(text) like '%MYSEQ.NEXTVAL%';

В SQL Developer для этого есть отчет.

2
ответ дан 6 December 2019 в 19:36
поделиться

Проблема в том, что Oracle позволяет нам использовать одну последовательность для заполнения столбцов в нескольких таблицах. Сценарии, в которых это может быть желательно, включают реализации супертипа / подтипа.

Вы можете использовать зависимости в словаре данных для определения отношений. Например, если вы используете триггеры для присвоения значений, этот запрос вам поможет:

select ut.table_name
       , ud.referenced_name as sequence_name
from   user_dependencies ud
       join user_triggers ut on (ut.trigger_name = ud.name)
where ud.type='TRIGGER' 
and ud.referenced_type='SEQUENCE'
/

Если вы используете PL / SQL, вы можете написать что-то подобное для TYPE в ('PACKAGE BODY', 'PROCEDURE', ' FUNCTION ') , хотя вам все равно потребуется некоторое изучение исходного кода, чтобы назначить таблицы и последовательности, когда у вас есть несколько совпадений.

8
ответ дан 6 December 2019 в 19:36
поделиться

Если ваша последовательность используется в триггере, триггер будет указан в списке "referenced by" последовательности.

Если ваша последовательность используется только в запросах к исходному коду, то да, просмотр кода - единственный способ.

2
ответ дан 6 December 2019 в 19:36
поделиться

Используйте GREP для сканирования всего источника на предмет "myseq.NextVal" - myseq - это тот, который вы ищете ....

1
ответ дан 6 December 2019 в 19:36
поделиться

Я хотел бы добавить background информацию о последовательностях.

0
ответ дан 6 December 2019 в 19:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: