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 20/12/2007, 01h57   #1
Membre du Club
 
Inscription : janvier 2007
Messages : 139
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 139
Points : 42
Points : 42
Par défaut séquence et clé primaire

bonjour tous
j'ai 3 tables A, B et C
j'ai besoin que les valeurs de la clé primaire de A n'appartinnent pas à ceux des clés primaires de B et ceux de C et vise versa pour les autres
clé primaire = int
c'est à dire que si 1 comme clé primaire dans A alors il ne doit pas apparaître comme clé primaire pour les tables B et C
et vise versa
J'ai pensé à utiliser une même séquence pour les 3 tables, mais je ne sais pas comment ça marche sur mysql
alors si vous pouvez m'aider, merci d'avance
luna007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2007, 02h05   #2
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 540
Points : 9 540
Sur MySQL (comme sur tous les SGBD autres qu'Oracle), il n'y a pas de séquence, mais des colonnes-clés autoincrémentées.

Tu peux toutefois obtenir le même résultat en créant une table qui ne comporterait qu'une seule colonne, en auto_increment.

Code :
CREATE TABLE seq(num int AUTO_INCREMENT PRIMARY KEY) ;
Pour obtenir un numéro séquentiel, tu fais une insertion dans cette table :
Code :
INSERT INTO seq(num) VALUES(DEFAULT) ;
Tu récupères ensuite le numéro séquentiel avec la fonction LAST_INSERT_ID() (en SQL) ou mysql_insert_id() (en PHP). Attention, cette fonction doit être utilisée immédiatement après ton insertion. Par exemple :
Code :
1
2
3
4
5
6
INSERT INTO seq(num) VALUES(DEFAULT) ;
INSERT INTO A (ID, col2, col3) VALUES(LAST_INSERT_ID(), 'toto', 'tata') ;
INSERT INTO seq(num) VALUES(DEFAULT) ;
INSERT INTO B (ID, col2, col3) VALUES(LAST_INSERT_ID(), 'toto', 'tata') ;
INSERT INTO seq(num) VALUES(DEFAULT) ;
INSERT INTO C (ID, col2, col3) VALUES(LAST_INSERT_ID(), 'toto', 'tata') ;
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2007, 03h44   #3
Membre du Club
 
Inscription : janvier 2007
Messages : 139
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 139
Points : 42
Points : 42
Bonne astuce
Merci pour votre aide , ça a marché
luna007 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 07h57.


 
 
 
 
Partenaires

Hébergement Web