ORA-01452: cannot CREATE UNIQUE INDEX; doppelte Schlüssel gefunden

Diese können markiert werden, wie doppelte aber ich finde Problem, wenn ich gepfiffen
Erstellen Sie Einzigartige groß-und Kleinschreibung Einschränkung auf zwei varchar-Felder

Ich habe eine Tabelle std_tbl dass einige doppelte Datensätze in einer der Spalten sagen Column_One.

Ich erstellt eine unique-Einschränkung für die Spalte

ALTER TABLE std_tbl            
ADD CONSTRAINT Unq_Column_One     
UNIQUE (Column_One) ENABLE NOVALIDATE;  

Ich verwendet ENABLE NOVALIDATE, wie ich will, zu halten die bestehenden doppelte Datensätze zu validieren und zukünftige Datensätze auf Dubletten.

Aber hier, das constaint nicht für den Fall, heikle Begriffe, wie, wenn der Wert Column_One ist 'abcd', die es ermöglicht, 'Abcd' und 'ABCD' einfügen in die Tabelle.

Ich will das Verhalten der groß-und Kleinschreibung, so dass es nicht Aussehen sollten, für den Fall während der Validierung der Daten. Dafür habe ich mir diese Lösung ausgedacht.

CREATE UNIQUE INDEX Unq_Column_One_indx ON std_tbl (LOWER(Column_One));

Aber es gibt mir die Fehlermeldung:

ORA-01452: cannot CREATE UNIQUE INDEX; doppelte Schlüssel gefunden

Bitte helfen Sie mir...

  • Ich will nicht, um diese Datensätze löschen. Gibt es etwas wie NOVALIDATE, so dass es ignoriert vorhandene Duplikate?
  • Die Vorschrift ist so, dass nur zukünftige Aufzeichnungen sollte überprüft werden, wie die vorhandenen Einträge mit keys in anderen Tabellen. Und es macht Sinn, als ENABLE NOVALIDATE ist nur für diesen Zweck. Das einzige problem mit ENABLE NOVALIDATE ist, ist es case sensitive.
  • Bei zwei identischen Werten in der Tabelle - abcd zweimal sagen, mit dem gleichen Fall - dann ALTER TABLE werfen würden ORA-02299 trotz der NOVALIDATE, da es nicht in der Lage, erstellen Sie den eindeutigen index zurück, der bis. In 11g konnten Sie erstellen eine virtuelle Spalte und einschränken, aber Sie haben das gleiche problem, erstellen Sie den eindeutigen index. Sie müssten, um zu erstellen einen nicht-eindeutigen index zuerst, und verwenden, sichern Sie die unique-Einschränkung. Ich glaube nicht, dass Sie bekommen können, dass die kombinierte Wirkung in 10g obwohl, es sei denn, Sie imitieren die virtuelle Spalte mit einer real-Spalte und ein Auslöser.
InformationsquelleAutor Microsoft DN | 2014-08-26
Schreibe einen Kommentar