8 Stimmen

Welche Oracle-Tabelle verwendet eine Sequenz?

Bei einer Sequenz muss ich herausfinden, von welcher Tabelle/Spalte sie ihre Werte erhält. Soweit ich weiß, behält Oracle diese Beziehung nicht im Auge. Also wäre das Durchsuchen des Quellcodes der einzige Weg. Stimmt das?

Weiß jemand, ob es einen Weg gibt, diese Sequenz-Tabelle-Beziehung herauszufinden?

9voto

APC Punkte 140727

Das Problem ist, dass Oracle es uns ermöglicht, eine Sequenz zu verwenden, um Spalten in mehreren Tabellen zu füllen. Szenarien, in denen dies wünschenswert sein könnte, sind Implementierungen von Super-Typen/Unter-Typen.

Sie können die Abhängigkeiten im Datenwörterbuch verwenden, um Beziehungen zu identifizieren. Zum Beispiel, wenn Sie Trigger verwenden, um die Werte zuzuweisen, dann hilft Ihnen diese Abfrage:

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'
/

Wenn Sie PL/SQL verwenden, können Sie etwas Ähnliches für TYPE in ('PACKAGE BODY', 'PROCEDURE', 'FUNCTION') schreiben, obwohl Sie immer noch etwas durch den Quellcode graben müssen, um Tabellen und Sequenzen zuzuweisen, wenn Sie mehrere Treffer haben.

2voto

Quassnoi Punkte 396418

Wenn Ihre Sequenz in einem Trigger verwendet wird, wird der Trigger in der "verwendet von" Liste der Sequenz aufgeführt.

Wenn Ihre Sequenz nur in den Source-Code-Abfragen verwendet wird, dann ja, das Durchsuchen des Codes ist der einzige Weg.

2voto

Tony Andrews Punkte 125904

In der Datenbank können Sie alle gespeicherten Codes in Ihrem Schema wie folgt suchen:

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

In SQL Developer gibt es einen Bericht, um dies zu tun.

1voto

Martin Milan Punkte 6270

Verwenden Sie GREP, um Ihre gesamte Quelle nach "myseq.NextVal" zu durchsuchen - myseq ist der, den Sie suchen....

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X