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

novalidate mit Fehler ora-02299

Wenn ich Sie richtig verstehe, erwarten Sie, dass Oracle alte doppelte Werte ignoriert und neue Werte nur zulässt, wenn sie die Einschränkung erfüllen. Der Fehler wird zurückgegeben, weil beim Hinzufügen eines UNIQUE Constraint erstellt Oracle einen eindeutigen Index für die Spalte, um die Werte zu überprüfen, aber Ihre Tabelle enthält bereits doppelte Werte, sodass sie fehlschlägt. Ich würde zuerst den nicht eindeutigen Index erstellen und dann die Einschränkung hinzufügen, sodass Ihr vorhandener nicht eindeutiger Index verwendet wird, anstatt automatisch den eindeutigen Index zu erstellen, der fehlschlagen würde:

create index arc_ix on arc (name);

alter table arc add constraint arc_uq unique (name) enable novalidate;