Page 1 sur 1

Paire de colonnes uniques

Posté : 23 oct. 2006, 10:51
par lowcraft
Bonjour,

Je voudrait crée une table avec deux champs qui, par paire, seront unique, genre: (la ',' sépare chaque colonne)
1,1 = ligne unique
1,2 = ligne unique
2,5 = ligne unique
les paires (1,1), (1,2), et (2,5) représentent une ligne unique.
si par exemple j'ajoute 1,1, je crée un doublon.

Comment faire ?
Car j'ai une table avec deux colonnes INDEX, et je peux crée autant de doublon que je le souhaite, mais ce n'est pas ce que je veux.
Quand je crée une table avec PRIMARY comme première colonne et INDEX comme seconde, la clé primaire ne peux etre dédoublé (normale).

J'espère avoir été assez explicite,

Je n'ai pas essayé toutes les combinaisons possibles, mais créer des tables en tatonnant c'est pas vraiment top.

Olivier

Posté : 23 oct. 2006, 10:57
par Ajoloca
Bonjour,

La solution la plus simple est de créer ta clé primaire sur les deux colonnes.

Posté : 23 oct. 2006, 11:00
par lowcraft
On ne peux pas avoir de clé primaire sur deux colonnes.
et comme expliquer, je souhaiterais que deux colonnes puissent représenté une valeur unique et non duplicable.

Posté : 23 oct. 2006, 11:07
par Ajoloca
Re,
On ne peux pas avoir de clé primaire sur deux colonnes.
et comme expliquer, je souhaiterais que deux colonnes puissent représenté une valeur unique et non duplicable.
Depuis quand ???

Code : Tout sélectionner

mysql> create table ess( -> a int, -> b int, -> c varchar(10), -> primary key(a, b)); Query OK, 0 rows affected (0.01 sec) mysql>

Posté : 23 oct. 2006, 11:11
par Ajoloca
Re,
Et ça fait exactement ce que tu veux

Code : Tout sélectionner

mysql> insert into ess(a, b, c) values(1,1,"ess 1"); Query OK, 1 row affected (0.00 sec) mysql> insert into ess(a, b, c) values(1,1,"ess 1"); ERROR 1062 (23000): Duplicate entry '1-1' for key 1 mysql>

Posté : 23 oct. 2006, 11:12
par lowcraft
Désolé, je ne met pas en cause vos compétences, mais je me réfère simplement à la documentation, et oui, je suis bête et discipliné (et peut etre que je n'ai pas eu la force de lire la doc en entier...)
". Une table ne peut avoir qu'une seule clé primaire"
(Chapitre 13. Syntaxe des commandes SQL, Manuel de référence MySQL 5.0)

J'ai testé et cela fonctionne.
Merci.

Posté : 23 oct. 2006, 11:16
par lowcraft
Oui en effet, de plus une clé primaire représente deux colonnes dans cet exemple. (ou plus)

Je suis allé un peu vite en besogne...
Merci encore.

Olivier.

Posté : 23 oct. 2006, 11:17
par Ajoloca
Re,

Ce que dit la doc c'est exact, une table ne peut contenir qu'une seule clé primaire, mais la doc ne dit pas que la clé doit être sur une seule colonne.

Posté : 23 oct. 2006, 11:19
par lowcraft
Oui, en effet, et comme dit dans mon précédent post, je suis allé un peu vite, et j'en ai oubié de lire la phrase correctement, syntaxe, etc..

En allant trop vite, c'est ce qui se passe...
La prochaine fois cela me servira de leçon.

Bonne journée.

" La vie est SQL'elle est "