В какой таблице Oracle используется последовательность? - PullRequest
7 голосов
/ 02 марта 2010

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

Кто-нибудь знает какой-нибудь способ выяснить это отношение таблицы последовательности?

Ответы [ 5 ]

8 голосов
/ 02 марта 2010

Проблема в том, что 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 in ('PACKAGE BODY', 'PROCEDURE', 'FUNCTION'), хотя вам все равно потребуется некоторый просмотр исходного кода для назначения таблиц и последовательностей, когда у вас есть несколько обращений.

2 голосов
/ 02 марта 2010

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

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

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

2 голосов
/ 02 марта 2010

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

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

1 голос
/ 02 марта 2010

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

0 голосов
/ 18 июня 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...