sql >> Databáze >  >> RDS >> Oracle

Nelze ověřit, s možností novalidate

Nemůžete mít nejedinečné hodnoty s jedinečným indexem. Ale můžete mít nejedinečné hodnoty s jedinečným omezením, které je vynuceno nejedinečným indexem. I když jste původně vytvořili nejedinečný index, drop index a enable syntaxe se pokusí znovu vytvořit jedinečný index, pokud neposkytnete další podrobnosti v using index sekce.

Například:

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. Převeďte milisekundy UTC na DATETIME na serveru SQL

  2. Databáze kódů PIN v Indii se skriptem pro vyhledávání polohy v php a jquery

  3. JDBC vs webová služba pro Android

  4. Časté chyby DBA v MS SQL Server