PostgreSQL
La base de données la plus sophistiquée au monde.

Ouverture de session

Navigation

Contactez-nous

Administration du site :
"equipe chez postgresqlfr point org"

Contact presse :
"fr chez postgresql point org"

Contact association :
"bureau chez postgresqlfr point org"

Questions PostgreSQL :
 IRC :
  serveur irc.freenode.net
  canal #postgresqlfr

Recherche

Accéder aux archives

« Octobre 2008  
Lun Mar Mer Jeu Ven Sam Dim
  2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31  

Syndication

Flux XML

Sondage

Quelle est la version de PostgreSQL la plus répandue sur vos serveurs ?
8.3
10%
8.2
42%
8.1
40%
8.0
2%
7.4
6%
7.3 ou antérieure
0%
Nombre de votes: 48

Insertion de valeurs de clés étrangères

Technique - général | Insertion de valeurs de clés étrangères

Par Michael5 le 15/07/2005 - 20:52

Bonjour

Je souhaiterais trouver un moyen d'insérer (fonctiion, trigger ou autre) dans une table les identifiants (ou clés primaires) créés à la suite d'une insertion venant d'être réalisée dans une autre table. Par exemple
Voici le schéma
table 1:
ch_id >>(cle primaire)

table 2:
tab2_id
ch_id# >>(cle etrangere references table1)

j'aimerais savoir comment à la suite d'une insertion dans la table 1 récupérer la valeur de "ch_id" et l'insérer dans table2 en tant que clé étrangère, ce qui réaliserait la jointure.

Merci d'avance de vos réponses.

Options d'affichage des commentaires

Sélectionnez la méthode d'affichage des commentaires que vous préférez, puis cliquez sur "Sauvegarder les paramètres" pour activer vos changements.

Utiliser les séquences

Christophe Chauvet/ = 17 Juillet, 2005 - 14:25

Bonjour

dans votre cas, il faut que vous utilisiez les séquences, pour cela proceder comme suit :

la table1 , doit avoir le champ ch_id de type SERIAL ,
cela a pour effet de crée un champ de type INTEGER, associé a une séquence (compteur incrémenté). Cette séquence va s'appeller table1_ch_id_seq

lors de l'insertion dans la table2, pour le champ tab2_id il faudra récupérer la valeur du compteur via la fonction currval('table1_ch_id_seq')

cette méthode fonctionne également avec les transactions et permet de récuperer la bonne valeur.

Christophe.


© PostgreSQLFr, tous droits réservés.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.