Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Tidak dapat memvalidasi, dengan opsi novalidate

Anda tidak dapat memiliki nilai non-unik dengan indeks unik. Tetapi Anda dapat memiliki nilai non-unik dengan batasan unik yang diberlakukan oleh indeks non-unik. Bahkan jika Anda awalnya membuat indeks yang tidak unik, drop index dan enable sintaks akan mencoba membuat ulang indeks unik kecuali Anda memberikan detail lebih lanjut di using index bagian.

Misalnya:

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. Status Risiko Analisis Tekanan Memori

  2. Oracle Sql Developer string literal kesalahan terlalu panjang

  3. Permintaan parameter dalam masalah Oracle

  4. Permintaan Oracle sederhana:literal tidak cocok dengan string format

  5. Memisahkan nilai yang dipisahkan koma di Oracle