Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en 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 17/11/2006, 15h51   #1
Invité régulier
 
Inscription : novembre 2006
Messages : 26
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 26
Points : 7
Points : 7
Par défaut INSERT sur plusieurs tables.

bonjour à tous, c'est mon premier post.

j'aimerai pouvoir faire un INSERT sur 2 tables en même temps :

en fait, j'ai 2 tables : une table 'images' (id, blob, type) et une table 'materiel' (id, carac1, carac2, ..., image)

avec materiel.image qui "pointe" sur images.id

Mon problème est que j'aimerai pouvoir enregistrer mon l'image coorespondant au matériel en même temps que ses caractéristiques. comment puis-je faire ?
Nethervoid21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2006, 16h00   #2
Invité régulier
 
Inscription : novembre 2006
Messages : 26
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 26
Points : 7
Points : 7
Par défaut précisions sur le problème

si je fais d'abord l'INSERT sur la table matériel, je ne saurai pas quel valeur mettre dans le champ image, et si j'INSERT en premier dans la table image, je ne sais pas comment faire pour récupérer l'id (auto_increment) pour le réinjecter après dans la table materiel...
Nethervoid21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2006, 16h20   #3
Membre éprouvé
 
Avatar de karami
 
Inscription : juin 2005
Messages : 343
Détails du profil
Informations personnelles :
Localisation : Maroc

Informations forums :
Inscription : juin 2005
Messages : 343
Points : 465
Points : 465
Citation:
Envoyé par Nethervoid21
si je fais d'abord l'INSERT sur la table matériel, je ne saurai pas quel valeur mettre dans le champ image, et si j'INSERT en premier dans la table image, je ne sais pas comment faire pour récupérer l'id (auto_increment) pour le réinjecter après dans la table materiel...
D'abord tu doit commencer par l'insertion dans image pour satisfaire la contrainte d'integrité.
Pour récuperer l'autoincrémentant essaye d'utiliser 'nextval', ou tu peux le faire autrement selon le langage de programmation que tu utilise.
karami est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2006, 16h27   #4
Invité régulier
 
Inscription : novembre 2006
Messages : 26
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 26
Points : 7
Points : 7
j'utilise du PHP.

sinon, dans mysql, je récupère en faisant :

SELECT nextval(id) FROM images

??
Nethervoid21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2006, 16h41   #5
Membre éprouvé
 
Avatar de karami
 
Inscription : juin 2005
Messages : 343
Détails du profil
Informations personnelles :
Localisation : Maroc

Informations forums :
Inscription : juin 2005
Messages : 343
Points : 465
Points : 465
Citation:
Envoyé par Nethervoid21
j'utilise du PHP.

sinon, dans mysql, je récupère en faisant :

SELECT nextval(id) FROM images

??
Tu peux créer une sequence :
Code :
1
2
 
CREATE SEQUENCE ma_sequence;
et l'utiliser pendant l'insertion dans image par ma_sequence.nextval .
et dans l'autre table par ma_sequence.currval .
karami est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2006, 16h43   #6
Invité régulier
 
Inscription : novembre 2006
Messages : 26
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 26
Points : 7
Points : 7
oulah, j'ai rien compris.
Nethervoid21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2006, 16h54   #7
Membre éprouvé
 
Avatar de karami
 
Inscription : juin 2005
Messages : 343
Détails du profil
Informations personnelles :
Localisation : Maroc

Informations forums :
Inscription : juin 2005
Messages : 343
Points : 465
Points : 465
Citation:
Envoyé par Nethervoid21
oulah, j'ai rien compris.
tu crée la sequence comme indiqué precedement,
puis tu fais
Code :
INSERT INTO images(ma_sequence.NEXTVAL,blob,type)
et ensuite
Code :
INSERT INTO materiel(id,car1,car2...,ma_sequence.currval)
donc ma_sequence sera utiliser pour savoir la valeur actuel de l'id. mais tu doit utilser ma_sequence seulement pour incrémenter ce champ image.id!!!
karami est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2006, 11h22   #8
Membre Expert
 
Avatar de Alexandre T
 
Inscription : mai 2002
Messages : 1 022
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations forums :
Inscription : mai 2002
Messages : 1 022
Points : 1 123
Points : 1 123
Sequence est réservé à Oracle. MAxDB (de MySQL) gère ce mot clef, mais c'est seulement un synonyme pour l'implémentation de la base. Pour les séquences, je vous renvoie à la documentation officielle sur AUTO_INCREMENT et sur LAST_INSERT_ID(), LAST_INSERT_ID(expr)

3.6.9 Utiliser AUTO_INCREMENT

12.8.3. Fonctions d'informations
__________________
Alexandre T.

PHP5/MySQL5 Codes prêts à l'emploi
30 projets avec codes sources complets pour créer diaporamas photos, chat, arbre généalogique, statistiques de visites, création de graphiques, moteur de recherche, Sudoku etc...

Mes articles
Alexandre T 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 18h34.


 
 
 
 
Partenaires

Hébergement Web