Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Erzwingung des eindeutigen/primären Schlüssels – Index löschen

Sie können ALL_CONSTRAINTS abfragen Leistungsansicht um zu sehen, von welcher Einschränkung der Index verwendet wird und für welche Tabelle er gilt, z. B.:

select owner, constraint_name, constraint_type,
    table_name, index_owner, index_name
from all_constraints
where index_name = 'PK_CHARGES';

Ich würde erwarten, dass der Tabellenname „CHARGES“ lautet, der Constraint-Name mit dem Indexnamen übereinstimmt und der Constraint-Typ „P“ ist. Aber da Sie eine Tabelle im Sinn haben, folgen die Namen vielleicht keiner hilfreichen Konvention. Möglicherweise wurde eine alte Version der Tabelle umbenannt, wodurch die Einschränkungen für den neuen Namen bestehen blieben (z. B. CHARGES_BACKUP oder so).

Sie sagten, Sie klicken auf den Tisch und dann auf die Ansicht. Vielleicht sehen Sie sich nicht die Tabelle an, auf der sich die Einschränkung/der Index befindet; oder vielleicht betrachten Sie eine Ansicht über der eigentlichen Tabelle. Sie erwähnen auch ein SYS_ Index auf denselben Spalten - die sich nicht auf derselben Tabelle befinden können. Haben Sie mehrere ähnliche Tabellen oder Zugriff auf mehrere Schemas? Sie sollten die obige Abfrage auch für diesen Index ausführen. Wie oben erwähnt, finden Sie möglicherweise eine alte Version (oder Versionen) der Tabelle.

Sobald Sie identifiziert haben, für welche Tabelle die Einschränkung gilt, müssen Sie entscheiden, ob Sie sie tatsächlich behalten sollten, und wenn nicht, können Sie sie entfernen, indem Sie die Einschränkung mit einem ALTER TABLE löschen Befehl.