web-dev-qa-db-fra.com

Comment donner une contrainte unique à une combinaison de colonnes dans Oracle?

J'ai une table avec 4 colonnes

Chaque colonne sera A, B, C, D

La colonne A est la clé primaire. La colonne B a une contrainte de nom unique.

Maintenant, je veux supprimer la contrainte unique pour la colonne B et donner une contrainte unique en combinant les colonnes B, C et D. Ainsi, le tableau n'autorisera qu'une seule ligne avec une valeur particulière dans les colonnes B, C et D.

Comment puis-je donner ce type de contrainte?

J'ai essayé de donner la clé unique composite comme:

ALTER TABLE TABLENAME ADD CONSTRAINT CONSTRAINT_NAME UNIQUE (COLUMN_B, COLUMN_C, COLUMN_D)

Mais il vérifie si l'une des contraintes est présente plutôt que de vérifier la combinaison d'une contrainte de clé unique.

28
Nigel Thomas

Créez une clé unique sur ces colonnes

ALTER TABLE YourTable
  add CONSTRAINT YourTable_unique UNIQUE (B, C, D);

Oracle/PLSQL: contraintes uniques

49
saamorim

Tout d'abord, vous devez supprimer une contrainte existante en utilisant ci-dessous ALTER Query.

ALTER TABLE table_name
   DROP CONSTRAINT myUniqueConstraint;

Maintenant, vous pouvez créer une contrainte UNIQUE en utilisant le mot-clé UNIQUE avec la combinaison des colonnes requises.

Par exemple:

ALTER TABLE table_name
   ADD CONSTRAINT myUniqueConstraint UNIQUE(B, C, D);

Explication détaillée de la contrainte UNIQUE ici.

7

ALTER TABLE nom_table DROP CONSTRAINT nom_contrainte;

CREATE UNIQUE INDEX nom_contrainte ON nom_table (B, C, D)

1
Sunil Kumar