Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Débuter
Débuter Forum d'entraide pour débuter avec 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 10/12/2010, 10h30   #1
Membre éclairé
 
Avatar de llaffont
 
Loïc Laffont
Inscription : juin 2007
Messages : 495
Détails du profil
Informations personnelles :
Nom : Loïc Laffont
Âge : 34
Localisation : France, Loire (Rhône Alpes)

Informations forums :
Inscription : juin 2007
Messages : 495
Points : 380
Points : 380
Par défaut Combinaison de key unique -interdire les doublons-

Salut,

J'ai encore besoin de votre aide.

J'ai une table où je sauvegarde une configuration de checkbox en fonction de deux attributs.

Enfin bref ! Voilà ma table :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
CREATE TABLE IF NOT EXISTS `conf_erpcatrub` (
  `IdRub` int(11) NOT NULL,
  `IdCateg` int(11) NOT NULL,
  KEY `IdRub` (`IdRub`),
  KEY `IdCateg` (`IdCateg`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
--
-- Contenu de la table `conf_erpcatrub`
--
 
INSERT INTO `conf_erpcatrub` (`IdRub`, `IdCateg`) VALUES
(3, 1),
(3, 2),
(3, 3),
(3, 4),
(3, 5);
J'aimerais savoir s'il est possible de restreindre les doublons, lors d'une insertion.
De dire qu'une seule combinaison est possible.

Dans mon exemple nous ne pourrions pas rajouté un nouveau 3, 3.
__________________
En théorie tout devrait fonctionner...

La France a un incroyable talent : Son retard en technologie informatique
llaffont est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 10h39   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 974
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 974
Points : 18 216
Points : 18 216
Envoyer un message via MSN à CinePhil
Tu n'as pas spécifié de clé primaire pour ta table. Définis là avec le couple (IdRub, IdCateg). Et supprime l'index sur IdRub devenu inutile.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/12/2010, 10h46   #3
Membre éclairé
 
Avatar de llaffont
 
Loïc Laffont
Inscription : juin 2007
Messages : 495
Détails du profil
Informations personnelles :
Nom : Loïc Laffont
Âge : 34
Localisation : France, Loire (Rhône Alpes)

Informations forums :
Inscription : juin 2007
Messages : 495
Points : 380
Points : 380
En effet j'ai oublié un truc dans ma structure.

Code :
1
2
3
4
5
6
7
 
--
-- Contraintes pour la table `conf_erpcatrub`
--
ALTER TABLE `conf_erpcatrub`
  ADD CONSTRAINT `conf_erpcatrub_ibfk_1` FOREIGN KEY (`IdRub`) REFERENCES `rubrique_erp` (`IdRub`),
  ADD CONSTRAINT `conf_erpcatrub_ibfk_2` FOREIGN KEY (`IdCateg`) REFERENCES `categorie_erp` (`IdCateg`);
Voilà la raison des Key
__________________
En théorie tout devrait fonctionner...

La France a un incroyable talent : Son retard en technologie informatique
llaffont est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 11h00   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 974
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 974
Points : 18 216
Points : 18 216
Envoyer un message via MSN à CinePhil
Ce qui ne t'empêche nullement de générer ta clé primaire sur le couple de colonnes puis de supprimer l'index devenu inutile sur la première colonne de cette clé primaire.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2010, 11h38   #5
Membre éclairé
 
Avatar de llaffont
 
Loïc Laffont
Inscription : juin 2007
Messages : 495
Détails du profil
Informations personnelles :
Nom : Loïc Laffont
Âge : 34
Localisation : France, Loire (Rhône Alpes)

Informations forums :
Inscription : juin 2007
Messages : 495
Points : 380
Points : 380
Ok ! J'obtiens donc :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
 
 
CREATE TABLE IF NOT EXISTS `conf_erpcatrub` (
  `IdRub` int(11) NOT NULL,
  `IdCateg` int(11) NOT NULL,
  PRIMARY KEY (`IdRub`,`IdCateg`),
  KEY `IdCateg` (`IdCateg`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 
INSERT INTO `conf_erpcatrub` (`IdRub`, `IdCateg`) VALUES
(1, 1),
(1, 2),
(1, 3),
(1, 4);
 
 
ALTER TABLE `conf_erpcatrub`
  ADD CONSTRAINT `conf_erpcatrub_ibfk_1` FOREIGN KEY (`IdRub`) REFERENCES `rubrique_erp` (`IdRub`),
  ADD CONSTRAINT `conf_erpcatrub_ibfk_2` FOREIGN KEY (`IdCateg`) REFERENCES `categorie_erp` (`IdCateg`);
Merci CinePhil
__________________
En théorie tout devrait fonctionner...

La France a un incroyable talent : Son retard en technologie informatique
llaffont est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h49.


 
 
 
 
Partenaires

Hébergement Web