Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Nie można zweryfikować, z opcją walidacji

Nie możesz mieć nieunikalnych wartości z unikalnym indeksem. Ale możesz mieć nieunikalne wartości z unikalnym ograniczeniem, które jest wymuszane przez nieunikalny indeks. Nawet jeśli początkowo utworzyłeś nieunikalny indeks, drop index i enable składnia spróbuje odtworzyć unikalny indeks, chyba że podasz więcej szczegółów w using index sekcja.

Na przykład:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zwróć krótką nazwę dnia z daty w Oracle

  2. Uzyskanie wyjątku ORA-00942:tabela lub widok nie istnieje - podczas wstawiania do istniejącej tabeli

  3. Obracanie danych za pomocą dwóch kolumn

  4. Funkcja TANH() w Oracle

  5. Jak zobaczyć aktualną instrukcję Oracle SQL, która jest wykonywana?