Ich schreibe ein Schema Upgrade-Skript für ein Produkt, das von einer Oracle-Datenbank abhängt. In einem Bereich muss ich einen Index für eine Tabelle erstellen - falls dieser Index noch nicht existiert. Gibt es eine einfache Möglichkeit, nach einem Index zu suchen, von dem ich den Namen eines Oracle-Skripts kenne?So überprüfen Sie einen Index in Oracle
Es wäre in SQL Server ähnlich der folgenden sein: IF NOT EXISTS (SELECT * FROM SYSINDEXES WHERE NAME = 'MyIndex') // Dann ist mein MyIndex
Wenn Sie sie nicht angeben, werden Datenbankobjekte (einschließlich Indizes) in Großbuchstaben gespeichert. Wenn Sie also einen CREATE INDEX myIndex erstellen, wird dieser in USER_INDEXES als MYINDEX gespeichert. Und Oracle (standardmäßig) wird keine Groß- und Kleinschreibung beachten. –
nur zusätzlich zu dieser Antwort: Wenn Sie überprüfen müssen, ob ein Index in einem anderen Schema vorhanden ist, abfragen ALL_INDEXES anstelle von USER_INDEXES. Wenn USER_INDEXES nicht mit einem "ALTER SESSION SET CURRENT_SCHEMA = XYZ" überprüft wird, werden Sie weiterhin die Indizes für den aktuell angemeldeten Benutzer abfragen. – SaschaM78