Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL > Requêtes
Requêtes Forum d'entraide sur les requêtes SQL spécifiques à PostgreSQL, les triggers, les vues, etc.
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 28/08/2003, 09h57   #1
Invité de passage
 
Inscription : août 2003
Messages : 8
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 8
Points : 1
Points : 1
Par défaut [postgresql][foreign key]

Bonjour,

Je voudrais creer une table contenant une clé étrangère et je voudrais que la valeur de la clé étrangère puisse être à null, car j'insère mes données dans la première table avant de remplir la table contenant la clé étrangère.


ex:

CREATE TABLE treatment (id_trt serial NOT NULL, name_trt varchar(70) NOT NULL,PRIMARY KEY (id_trt));


CREATE TABLE patient (id_pat serial NOT NULL, name_pat varchar(70) NOT NULL, id_trt integer null,PRIMARY KEY (id_pat ), foreign key (id_trt) REFERENCES treatment (id_trt) ON UPDATE CASCADE ON DELETE CASCADE );

Voila je veux insérer les données dans la table patient avant celles de la table traitement, et lorsque j'esaie j'ai un message d'erruer:
ERROR: <unnamed> referential integrity violation - key referenced from patient not found in treatment


Pourriez vous m'éclairer ?Merci
elea1206 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2003, 10h18   #2
Membre habitué
 
Inscription : mai 2003
Messages : 145
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 145
Points : 146
Points : 146
Par défaut Re: [postgresql][foreign key]

Citation:
Envoyé par elea1206
Bonjour,

Je voudrais creer une table contenant une clé étrangère et je voudrais que la valeur de la clé étrangère puisse être à null, car j'insère mes données dans la première table avant de remplir la table contenant la clé étrangère.


ex:

CREATE TABLE treatment (id_trt serial NOT NULL, name_trt varchar(70) NOT NULL,PRIMARY KEY (id_trt));


CREATE TABLE patient (id_pat serial NOT NULL, name_pat varchar(70) NOT NULL, id_trt integer null,PRIMARY KEY (id_pat ), foreign key (id_trt) REFERENCES treatment (id_trt) ON UPDATE CASCADE ON DELETE CASCADE );
Code :
1
2
3
4
5
6
7
 
CREATE TABLE patient(
id_pat serial NOT NULL PRIMARY KEY,
name_pat varchar(70) NOT NULL,
id_trt integer,
constraint fk_patient FOREIGN KEY (id_trt) REFERENCES treatment(id_trt) ON UPDATE cascade ON DELETE cascade
);
wello00 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2003, 10h37   #3
Invité de passage
 
Inscription : août 2003
Messages : 8
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 8
Points : 1
Points : 1
Merci, mais cela ne change rien j'ai toujours le message d'erreur:

ERROR: fk_patient referential integrity violation - key referenced from patient not found in treatment

quand j'essaie d'insérer des données dans la table patient en laissant la colonne id_trt vide

elea1206 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2003, 10h48   #4
Invité de passage
 
Inscription : août 2003
Messages : 8
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 8
Points : 1
Points : 1
Désolée, en fait ca fonctionne bien ta solution.


Merci !
elea1206 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2003, 11h09   #5
Invité de passage
 
Inscription : août 2003
Messages : 8
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 8
Points : 1
Points : 1
En fait , je ne comprends pas trop où est la différence. En quoi le fait de donner un nom a la contrainte tout en gardant le reste autorise les valeurs nulles?

:
elea1206 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2003, 12h07   #6
Membre habitué
 
Inscription : mai 2003
Messages : 145
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 145
Points : 146
Points : 146
Citation:
Envoyé par elea1206
En fait , je ne comprends pas trop où est la différence. En quoi le fait de donner un nom a la contrainte tout en gardant le reste autorise les valeurs nulles?

:
De rien elea
l'erreur je crois c'est que t'avais rajouter NULL après ton champ
wello00 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h56.


 
 
 
 
Partenaires

Hébergement Web