Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1498 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Auto-increment multiple

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Auto-increment multiple

n°1887391
ZeBorG
Yes we can!
Posté le 24-05-2009 à 19:32:14  profilanswer
 

Bonjour à tous,
 
J'ai une petite question concernant l'auto-increment:
 
Imaginons la relation suivante:
http://images3.hiboox.com/images/2109/diapoe271522483ab9f48a0ed0bbc0b3ee1d8.png
La table "project" permet de répertorier le nom de divers projets.
La table "bug" permet de répertorier une liste de bug associer à un projet.
 
Mon problème est le suivant:
Je souhaite avoir un identifiant de bug qui s'auto-incrémente pour chaque projet. Ainsi, si j'ai les projets "Toto" et "Titi" et que j'ai pour chacun de ces projets plusieurs bugs, ça donnerait quelque chose comme ceci:
 
project:
id | name
0  | "Toto"
1  | "Titi"
 
et
 
bug:
id | project_id | label
0  | 0 | "Un bug"
1  | 0 | "Un autre bug"
2  | 0 | "Un autre autre bug"
0  | 1 | "Un autre autre autre bug"
1  | 1 | "Un autre autre autre autre bug"
2  | 1 | "Un autre autre autre autre autre bug..."
 
Hors, ça si je laisse l'auto-incremente de bug.id s'auto-incrémenter et que je ne renseigne que project_id et label quand je créer une nouvelle entré dans bug, j'obtien le résultat suivant:
 
bug:
id | project_id | label
0  | 0 | "Un bug"
1  | 0 | "Un autre bug"
2  | 0 | "Un autre autre bug"
3  | 1 | "Un autre autre autre bug"
4  | 1 | "Un autre autre autre autre bug"
5  | 1 | "Un autre autre autre autre autre bug..."
 
 
Y a-t'il une façon élégante de faire repartir l'auto-incrément de 0 pour chaque nouveau projet?

mood
Publicité
Posté le 24-05-2009 à 19:32:14  profilanswer
 

n°1887402
ZeBorG
Yes we can!
Posté le 24-05-2009 à 20:05:21  profilanswer
 

Si je le fait à la main, imaginons que je souhaite ajouter un bug relatif a un projet, je doit d'abord récupérer le plus grand ID déjà utilisé pour ce projet. Je procède donc ainsi:
 
SELECT MAX(id) FROM bug WHERE project_id = 1
 
J'incrément cette valeur ainsi obtenu de 1 pour la stocker dans une variable nommé new_id
 
Je peux enfin faire:
 
INSERT INTO `bug` (`id`, `project_id`, `label`) VALUES (
    new_id,
    '1',
    'Un bug'
);
 
 
Y a-til une façon d'effectuer cela en une seule requête en MySQL? Si je remplace new_id directement par la requête SELECT comme ceci:
 
INSERT INTO `bug` (`id`, `project_id`, `label`) VALUES (
    SELECT MAX(id) FROM bug WHERE project_id = 1,
    '1',
    'Un bug'
);
 
j'ai une erreur #1093 - You can't specify target table 'bug' for update in FROM clause :(

n°1887500
vttman2
Je suis Open ...
Posté le 25-05-2009 à 10:37:41  profilanswer
 

Essaye ça ... j'ai pas vérifié niveau syntaxe Mysql ...
 
INSERT INTO `bug` (`id`, `project_id`, `label`)  
(SELECT MAX(id) FROM bug WHERE project_id = 1,  
    '1',  
    'Un bug'  
from  `bug`);


---------------
il n'y a pas que le VTT dans la vie, il y a le Snowboard aussi ...
n°1887501
flo850
moi je
Posté le 25-05-2009 à 10:41:07  profilanswer
 

le moyen le plus propre que je vois pour gérer ça, c'est de mettre en place un trigger  ( declencheur)


---------------

n°1887505
ZeBorG
Yes we can!
Posté le 25-05-2009 à 10:49:47  profilanswer
 

vttman2> il y a effectivement des petits souci niveau syntaxique ;)
 
flo850> va falloir que je me renseigne sur comment les trigger marchent.
 
Merci pour vos aides

n°1887507
ZeBorG
Yes we can!
Posté le 25-05-2009 à 10:53:12  profilanswer
 

J'ai trouvé ce site avec plein d'info/tuto sur MySQL: http://www.mysqltutorial.org/
 
Je vais essayé de lire ça cette semaine (soir et WE vu que c'est un projet perso </mylife> )

n°1887520
vttman2
Je suis Open ...
Posté le 25-05-2009 à 11:15:10  profilanswer
 

Si les sequences existent pas niveau mysql
alors effectivement se pencher vers triggers (déclencheurs)


---------------
il n'y a pas que le VTT dans la vie, il y a le Snowboard aussi ...

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Auto-increment multiple

 

Sujets relatifs
auto évaluationListes à choix multiple avec VBScript
[résolu] Div en overflow:auto, garder le focus en bas ?[Access 2000] ajout multiple anormal
[Zend][REST]supprimer génération auto du parametre arg1 et method ?recuperation d'IP sur serveur distant, probleme de compteur
XML autoComment modiifier ce code pour avoir une recherche multiple?
Overflow: auto et scrollbar ie6Enlever le son d'une vidéo en lancement auto
Plus de sujets relatifs à : Auto-increment multiple


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR