novalidate mit Fehler ora-02299
kann jemand helfen Sie mir mit diesem?
id | Name
--------
1 | aaa
2 | bbb
3 | aaa
>alter table arc add CONSTRAINT uk_arc UNIQUE (NAME) novalidate
error :ora-02299: cannot validate( .uk_arc ) - duplicate keys found
Ich bin mit novalidate zu ignorieren, der alte doppelte und beginnen, überprüfen Sie alle immer wieder.
- Mögliche Erklärung hier
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn ich Sie richtig, Sie erwarten, dass Oracle zu ignorieren alte doppelte Werte und damit die neuen Werte nur, wenn Sie erfüllen die Randbedingung. Der Fehler wird zurückgegeben, da beim hinzufügen eines
UNIQUE
Einschränkung, Oracle erstellt eindeutigen index auf die Spalte, um die Werte zu überprüfen, aber deine Tabelle, die bereits doppelte Werte auf, so dass es ausfällt. Ich würde die non-unique index zuerst, dann fügen Sie die Einschränkung so, dass es verwendet Ihre vorhandene non-unique-index nicht automatisch die Erstellung des unique-index, die scheitern würden:UNIQUE
Einschränkung, Oracle Bedürfnisse index, und standardmäßig, es schafft einzigartige index, wenn Sie hinzufügenUNIQUE
Einschränkung. Unique-index allein kann garantieren Einzigartigkeit, und soUNIQUE
Einschränkung ist überflüssig. Also dieUNIQUE
Einschränkung ist in diesem Fall mehr wie eine deklarative Art und Weise zu sagen, dass es eine Einschränkung. Nicht-eindeutigen index haben, auf der anderen Seite, können Duplikate (daher der name), und dienen für dieUNIQUE
Einschränkung als Mittel, um zu bestimmen, wenn es doppelte Werte. In diesem Fall wird die Einschränkung nicht deklarative.