Alter table enable novalidate Einschränkung
Ich versuche, fügen Sie UNIQUE KEY
auf eine bereits vorhandene Tabelle mit doppelten Datensätzen durch Einstellung ENABLE NOVALIDATE
.
Aber ich bin immer ORA-02299: cannot validate (my_owner.my_key_UK ) - duplicate keys found
ALTER TABLE my_owner.my_table
ADD CONSTRAINT my_key_UK UNIQUE (ID1,ID2)
ENABLE NOVALIDATE;
- Mögliche Duplikate von novalidate mit Fehler ora-02299
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einer unique-Einschränkung verwendet einen index, um die Durchsetzung der noduplicates Regel. Standardmäßig wird es einen eindeutigen index erstellen (macht Sinn, oder?). Es ist diese index-Erstellung, die ist hurling
ORA-02299
.Allerdings, wenn dies ist ein vorhandener index auf die eingeschränkte Spalten-integritätsregel verwendet wird. Die gute Nachricht ist, der index muss nicht eindeutig sein, für die Einschränkung, es zu benutzen.
Also, was Sie tun müssen, ist, bauen Sie einen nicht eindeutigen index erste:
Dann werden Sie in der Lage, erstellen Sie Ihre Einschränkung:
Können Sie dies überprüfen, indem Sie die Abfrage des data-dictionary:
Oracle sicherzustellen, dass eindeutige Werte mit Indizes. Und wenn Sie schaffen einzigartige schränkt db-automatische schafft einzigartige index. Problemumgehung fügen Sie
DEFERRABLE
Optionen. In diesem Fall oracle schafft normalen index. Überprüfen Beispiel.SET CONSTRAINTS my_key a DEFERRED
Einschränkung geprüft werden, während der Begehung.DEFERRABLE
schränkt oracle doesnt drop hintergrund index automatisch.