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 04/06/2006, 20h49   #1
Nouveau Membre du Club
 
Inscription : octobre 2003
Messages : 86
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 86
Points : 26
Points : 26
Par défaut Numéro unique ?

Salut,

Je cherche à générer un numéro unique lors de l'insertion d'un record.

Explication, j'ai trois tables : TableA, TableB et TableC, les 3 tables ont une clé primaire qui est de type int avec auto-incrementation. J'aurais besoin d'insérer dans une 4ème table des informations. Est-il possible avant l'insertion dans les tables de créer un n° unique que je pourrai déjà utiliser dans l'insertion dans la table A,B et C et ensuite dans la 4ème. En Oracle par exemple, on utilise une séquence que l'on incrémente, on recupère la valeur et on l'utilise alors dans les tables que l'on désire.

Merci,
Oufti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2006, 21h45   #2
Provisoirement toléré
 
Avatar de Maximilian
 
Inscription : juin 2003
Messages : 2 622
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 2 622
Points : 2 505
Points : 2 505
Salut

Ca doit être faisable avec une table "sequence" donc la seule colonne est un auto_increment et avec LAST_INSERT_ID().
__________________
Pensez au bouton
Maximilian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2006, 08h15   #3
Nouveau Membre du Club
 
Inscription : octobre 2003
Messages : 86
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 86
Points : 26
Points : 26
Citation:
Envoyé par Maximilian
Ca doit être faisable avec une table "sequence" donc la seule colonne est un auto_increment et avec LAST_INSERT_ID().
J'avais pensé à cette solution mais je voulais un truc qui fait un peu moins bricolage ....

Merci,

C.
Oufti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2006, 09h47   #4
Modérateur
 
Avatar de mathieu
 
Inscription : juin 2003
Messages : 4 893
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 4 893
Points : 4 466
Points : 4 466
Citation:
Envoyé par Oufti
J'avais pensé à cette solution mais je voulais un truc qui fait un peu moins bricolage ....
dans ce cas réorganise tes tables pour en faire une seule
__________________
Modérateur PHP
mathieu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2006, 09h59   #5
Nouveau Membre du Club
 
Inscription : octobre 2003
Messages : 86
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 86
Points : 26
Points : 26
Citation:
Envoyé par mathieu
dans ce cas réorganise tes tables pour en faire une seule
C'est possible mais s'il y a deux tables c'est qu'il y a une raison. Ne faire que une seule table c'est aussi du bricolage. Si je ne trouve rien d'autre, j'utiliserai une table de séquence.

C.
Oufti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2006, 15h15   #6
Modérateur
 
Avatar de mathieu
 
Inscription : juin 2003
Messages : 4 893
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 4 893
Points : 4 466
Points : 4 466
Citation:
Envoyé par Oufti
C'est possible mais s'il y a deux tables c'est qu'il y a une raison.
et quelle est cette raison ?
je demande ça parce que pour moi mettre une liste de nombres dans plusieurs tables c'est aussi du bricolage
__________________
Modérateur PHP
mathieu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2006, 15h36   #7
Nouveau Membre du Club
 
Inscription : octobre 2003
Messages : 86
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 86
Points : 26
Points : 26
Citation:
Envoyé par mathieu
et quelle est cette raison ?
Le multilinguisme. Les infos varient (le nom, la description d'un produit par exemple) suivant la langue.

C.
Oufti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2006, 16h40   #8
Provisoirement toléré
 
Avatar de Maximilian
 
Inscription : juin 2003
Messages : 2 622
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 2 622
Points : 2 505
Points : 2 505
Mathieu a raison, je pense qu'il y a moyen de faire une modèle beaucoup plus générique. Par exemple :

Code :
1
2
3
langue (id_langue, nom_langue)
produit (id_produit, prix)
produit_langue (id_produit, id_langue, nom, description)
au lieu de

Code :
1
2
3
produit_francais (id_produit, nom, description, prix)
produit_anglais (id_produit, nom, description, prix)
produit_espagnol (id_produit, nom, description, prix)
__________________
Pensez au bouton
Maximilian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2006, 16h45   #9
Nouveau Membre du Club
 
Inscription : octobre 2003
Messages : 86
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 86
Points : 26
Points : 26
Citation:
Envoyé par Maximilian
Code :
1
2
3
produit_francais (id_produit, nom, description, prix)
produit_anglais (id_produit, nom, description, prix)
produit_espagnol (id_produit, nom, description, prix)
Suis pas débile, je n'allais certainement pas faire comme ça
Oufti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2006, 17h52   #10
Membre expérimenté
 
Inscription : mai 2005
Messages : 414
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 414
Points : 589
Points : 589
Ben comme y a pas de séquence en Mysql, à part le bricolage, tu n'auras pas beaucoup de possibilités malheureusement.

Ou alors, mettre ta base sur un serveur Oracle
gregory.broissard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2006, 17h59   #11
Nouveau Membre du Club
 
Inscription : octobre 2003
Messages : 86
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 86
Points : 26
Points : 26
Citation:
Envoyé par gregory.broissard
Ben comme y a pas de séquence en Mysql, à part le bricolage, tu n'auras pas beaucoup de possibilités malheureusement.
hé oui

Citation:
Ou alors, mettre ta base sur un serveur Oracle
Pourquoi pas, j'aime bien, au boulot je l'utilise depuis.... piouf plusieurs années. mais c'est un peu trop usine à gaz pour ce que j'ai à faire
Oufti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2006, 18h02   #12
Provisoirement toléré
 
Avatar de Maximilian
 
Inscription : juin 2003
Messages : 2 622
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 2 622
Points : 2 505
Points : 2 505
Citation:
Envoyé par Oufti
Suis pas débile, je n'allais certainement pas faire comme ça
Si tu le dis...
Je serais quand même curieux de connaitre le cas de figure qui t'oblige à faire ces contorsions.
__________________
Pensez au bouton
Maximilian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2006, 19h59   #13
Membre expérimenté
 
Inscription : mai 2005
Messages : 414
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 414
Points : 589
Points : 589
t'es pas forcément obligé de mettre une instance Oracle complète.

Tu peux peut être juste utiliser un bout d'une base de données (un schéma, un tablespace sur une base existante et le tour est jouée)
gregory.broissard 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 19h46.


 
 
 
 
Partenaires

Hébergement Web