Précédent   Forum des professionnels en informatique > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/03/2011, 15h45   #1
Nouveau Membre du Club
 
François
Inscription : mars 2008
Messages : 59
Détails du profil
Informations personnelles :
Nom : François
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2008
Messages : 59
Points : 25
Points : 25
Par défaut Création d'index sur 3 colonnes (unique)

Bonsoir!

Une petite question rapide, j'ai une table de la forme suivante:


Code :
1
2
3
4
5
6
id_table, id_objet, valeur1, valeur2
 
id_table: INT AUTOINCREMENT...
id_objet: INT (FOREIGN KEY sur autre TABLE)
valeur1: INT
valeur2: INT
Je n'arrive pas à configurer mes clés pour que valeur1 et valeur2 soient uniques pour un id_objet donné, et que, toujours pour un id_objet donnée, valeur1 soit différents de valeur2...


J'ai essayer en créant une clé primaire/une clé unique, sur id_objet, valeur1, valeur2 en vain... j'arrive à avoir soit ma première condition de valide mais pas la seconde...

Des idées?

Par avance merci!
franquis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2011, 08h37   #2
Membre Expert
 
Avatar de Nudger
 
Homme Thomas Arnaud
Directeur de projet
Inscription : octobre 2010
Messages : 452
Détails du profil
Informations personnelles :
Nom : Homme Thomas Arnaud
Âge : 36
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Directeur de projet
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : octobre 2010
Messages : 452
Points : 1 012
Points : 1 012
Envoyer un message via Skype™ à Nudger
Bonjour,

Citation:
J'ai essayer en créant une clé primaire/une clé unique, sur id_objet, valeur1, valeur2 en vain...
Peut-on connaître la requête qui a été utilisée pour créer cette clé ?
__________________
www.nudge.org Surveillez et optimisez vos applications Java
Nudger est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2011, 09h27   #3
Nouveau Membre du Club
 
François
Inscription : mars 2008
Messages : 59
Détails du profil
Informations personnelles :
Nom : François
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2008
Messages : 59
Points : 25
Points : 25
Bonjour! Voici le code de création de ma table:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
CREATE TABLE `atm` (
	`id_atm` INT(10) NOT NULL AUTO_INCREMENT,
	`id_brasseur_atm` INT(10) NOT NULL DEFAULT '0',
	`port_working` INT(10) NOT NULL DEFAULT '0',
	`port_protected` INT(10) NOT NULL DEFAULT '0',
	`stm_working` INT(10) NULL DEFAULT '0',
	`stm_protected` INT(10) NULL DEFAULT '0',
	`aps_group` INT(10) NULL DEFAULT '0',
	PRIMARY KEY (`id_atm`, `port_working`, `port_protected`),
	UNIQUE INDEX `ports_protected` (`port_protected`, `id_brasseur_atm`),
	UNIQUE INDEX `ports_working` (`port_working`, `id_brasseur_atm`),
	INDEX `FK_atm_brasseurs_atm` (`id_brasseur_atm`),
franquis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/04/2011, 00h48   #4
Membre confirmé
 
Inscription : novembre 2007
Messages : 134
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 134
Points : 213
Points : 213
Bonjour,
Je dis peut être des bêtises mais cela me semble normal que ça ne fonctionne pas.
Dans votre cas, j'aurai tendance à dire qu'il faut trois index uniques pour contraindre l'unicité des données comme vous le souhaitez. Cependant, si vous regardez votre code vous verrez que la clé primaire utilise la colonne "id_atm" alors que les deux index uniques suivants utilisent la colonne "id_brasseur_atm". Il faudrait mieux connaitre vos données pour le dire mais ne serait il pas plus judicieux d'avoir une clé primaire sur une colonne unique "id_atm" et d'avoir un index unique sur l'ensemble des trois colonnes avec "id_brasseur_atm" ...
Bon courage
patic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2011, 02h43   #5
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 843
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 843
Points : 1 318
Points : 1 318
Salut,

Une clé primaire est par définition un index unique automatique donc les 3 colonnes ne peuvent former que des triplets uniques

Les 2 autres index uniques rajoutent donc des contraintes donc le moteur devrait rejeter certaines insertions en te disant que ça viole telle ou telle obligation d'unicité (comme quand tu insères plusieurs id identique sur une primary key classique).

Le problème est que tu donnes pas d'exemples de soit disant non respect de tes contraintes ni de ce que ça fait en réaction donc dur de t'aider...
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h55.


 
 
 
 
Partenaires

Hébergement Web