Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
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 24/07/2007, 15h58   #1
Invité régulier
 
Inscription : mai 2006
Messages : 46
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 46
Points : 7
Points : 7
Par défaut Problème d'insert, clé étrangère

Bonjour à tous,

Je vais tout d'abord vous présenter en gros mon schéma de base

TABLE ENLEVEMENT : id_enlevement(clé primaire), date .... etc
TABLE ENLEVEMENT_LIGNE : id_enlevement_ligne(clé primaire), id_enlevement (clé étrangère)

Je fais tout d'abord un Insert dans la premiere table sans soucis, puis quand je veux faire un insert dans la seconde, je recup le "id_enlevement" de la premiere table pour l'insérer dans la seconde et la Erreur : violates foreign key constraint

Comment puis je faire pour insérer l'id_enlevement de la 1e dans la seconde sans soucis?

Merci d'avance
lvldia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2007, 09h18   #2
Invité régulier
 
Inscription : mai 2006
Messages : 46
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 46
Points : 7
Points : 7
J'ai tenté de récupérer le champ qui m'intéresse en faisant un Select directement dans mon Insert, et toujours la même erreur.

Need help please
lvldia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2007, 14h45   #3
Membre émérite
 
Avatar de hpalpha
 
Inscription : mars 2002
Messages : 770
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 770
Points : 833
Points : 833
Peux tu mettre exactement, les DDL des tables (le create) et les INSERT que tu fais ?

Grossomodo, ca se passe comme ca :

insert into t_enlevement (33,2007-01-01::date,'infos');

insert into t_enlevement_ligne(767,33);

si tes identifiants sont de type serial tu peux jouer avec les currval.

insert into t_enlevement (DEFAULT,2007-01-01::date,'infos');

insert into t_enlevement_ligne(DEFAULT,currval('masequence'));
hpalpha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2007, 13h25   #4
Invité régulier
 
Inscription : mai 2006
Messages : 46
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 46
Points : 7
Points : 7
Citation:
Envoyé par hpalpha
Peux tu mettre exactement, les DDL des tables (le create) et les INSERT que tu fais ?

Grossomodo, ca se passe comme ca :

insert into t_enlevement (33,2007-01-01::date,'infos');

insert into t_enlevement_ligne(767,33);

si tes identifiants sont de type serial tu peux jouer avec les currval.

insert into t_enlevement (DEFAULT,2007-01-01::date,'infos');

insert into t_enlevement_ligne(DEFAULT,currval('masequence'));
Bonjour,

Je viens de trouver le problème, au moment de mes insertions, je récupérais la valeur de clé primaire dans une variable, pour l'insérer dans ma clé étrangère de seconde table, mais en fait j'ai pensé a faire pg_escape_string($mavariable) et là l'insertion fonctionne.

Pourtant j'avais déjà eu ce genre de problemes auparavant, mais je croyais que ca venait de mes contraintes le problème.

Donc c'est résolu.

Merci tout de même pour ton aide
lvldia 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 12h41.


 
 
 
 
Partenaires

Hébergement Web