dimanche 16 juin 2013

ORA-01452

Si on essaie d'ajouter un indice unique sur une colonne qui contient des doublons, Oracle répond avec une erreur ORA-01452. J'ai testé cette erreur sur Oracle version 11.2.0.2.7. D'abord j'ai créé une table avec les noms des propriétaires de tous les objets dans la vue DBA_OBJECTS. La plupart de ces propriétaires possède plus qu'un objet. Il y a donc plusieurs doublons dans la table. Ensuite j'ai essayé de créer un indice unique sur la table mais la commande a echoué: 

SQL> alter session set nls_language = 'FRENCH'
  2  /
 
Session modifiee.
 
SQL> create table owners1
  2  as select owner
  3  from dba_objects
  4  /
 
Table creee.
 
SQL> create unique index owners1_idx
  2  on owners1 (owner)
  3  /
on owners1 (owner)
   *
ERREUR a la ligne 2 :
ORA-01452: CREATE UNIQUE INDEX impossible ; il existe
des doublons

SQL>

J'ai répété le processus, en ajoutant le mot DISTINCT quand je créais la table. Par conséquent il n'y avait pas de doublons dans la table et j'ai pu créer mon indice unique sans problèmes: 

SQL> create table owners2
  2  as select distinct owner
  3  from dba_objects
  4  /
 
Table creee.
 
SQL> create unique index owners2_idx
  2  on owners2 (owner)
  3  /
 
Index cree.
 
SQL>

Aucun commentaire:

Enregistrer un commentaire