4 votes

Contrainte unique Oracle et clé primaire non nulle

Une table peut-elle avoir un attribut de clé primaire et une contrainte unique sur un autre attribut ?

J'ai les éléments suivants

CREATE TABLE BRANCH(
BRA_CODE NUMBER NOT NULL PRIMARY KEY,
BRA_NAME VARCHAR(15),
BRA_ADDR VARCHAR(30),
 CITY_ID NUMBER);

et j'essaie d'ajouter

ALTER TABLE BRANCH ADD CONSTRAINT UNIQUE_BRANCH_NAME UNIQUE (BRA_NAME);

et j'obtiens l'erreur suivante ;

ERROR at line 1:
ORA-02261: such unique or primary key already exists in the table

5voto

GolezTrol Points 54531

Vous pouvez avoir une contrainte unique en dehors de la clé primaire, mais le message indique que vous avez déjà ajouté une telle contrainte.

5voto

paulsm4 Points 39422

Q : Une table peut-elle avoir un attribut de clé primaire et une contrainte unique sur un autre attribut ? un autre attribut ?

R : Oui :

  • Une table ne peut avoir plus d'une clé primaire.

  • Une clé primaire peut être constituée de plusieurs colonnes (une "clé primaire composite").

  • Toute colonne peut avoir une "contrainte unique", qu'il s'agisse ou non d'une colonne à clé primaire.

  • Une clé primaire est toujours "unique", et possède toujours une contrainte "unique".

ERREUR à la ligne 1 : ORA-02261 : une telle clé unique ou primaire existe déjà dans la table

R : Vérifiez votre schéma. Vous avez déjà une clé primaire, et/ou vous avez déjà défini la même contrainte unique.

Par exemple :

http://www.shutdownabort.com/dbaqueries/Structure_Constraints.php

col type format a10
col cons_name format a30
select  decode(constraint_type,
        'C', 'Check',
        'O', 'R/O View',
        'P', 'Primary',
        'R', 'Foreign',
        'U', 'Unique',
        'V', 'Check view') type
,   constraint_name cons_name
,   status
,   last_change
from  dba_constraints
where  table_name like 'BRANCH'
order by 1

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X