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

Kann nicht validiert werden, mit der Option novalidate

Sie können keine nicht eindeutigen Werte mit einem eindeutigen Index haben. Sie können jedoch nicht eindeutige Werte mit einer eindeutigen Einschränkung haben, die durch einen nicht eindeutigen Index erzwungen wird. Auch wenn Sie ursprünglich einen nicht eindeutigen Index erstellt haben, wird der drop index und enable Syntax wird versuchen, einen eindeutigen Index neu zu erstellen, es sei denn, Sie geben weitere Details in using index an Abschnitt.

Zum Beispiel:

SQL> create table my_table(my_column number,
  2     constraint my_constraint unique (my_column));

Table created.

SQL> alter table my_table disable constraint my_constraint drop index;

Table altered.

SQL> insert into my_table select 1 from dual union all select 1 from dual;

2 rows created.

SQL> alter table my_table enable novalidate constraint my_constraint;
alter table my_table enable novalidate constraint my_constraint
*
ERROR at line 1:
ORA-02299: cannot validate (USER.MY_CONSTRAINT) - duplicate keys found


SQL> alter table my_table enable novalidate constraint my_constraint
  2     using index (create index my_index on my_table(my_column));

Table altered.

SQL> --The constraint is enforced, even though other rows violate it.
SQL> insert into my_table values(1);
insert into my_table values(1)
*
ERROR at line 1:
ORA-00001: unique constraint (USER.MY_CONSTRAINT) violated