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 18/01/2005, 16h39   #1
Expert Confirmé
 
Avatar de Guigui_
 
Homme
Ingénieur développement logiciels
Inscription : août 2002
Messages : 1 856
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Enseignement

Informations forums :
Inscription : août 2002
Messages : 1 856
Points : 3 890
Points : 3 890
Par défaut [REFERENCES/FOREIGN KEY]problème d'unicité de clé

Je me crée 2 tables dont dans une undes paramètres fait références à la première (je travaille directement sur psql.exe)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CREATE TABLE T_LIEU (
  id_lieu serial,
  LI_Ville VARCHAR(50), 
  LI_CodePostal int, 
  PRIMARY KEY(LI_Ville,LI_CodePostal)
);
 
CREATE TABLE t_patient
(
  id_patient serial,
  pa_nom varchar(20),
  pa_prenom varchar(30),
  pa_id_lieu int4,
  FOREIGN KEY (pa_id_lieu) REFERENCES t_lieu (id_lieu)
);
A la création de la deuxième table, j'ai l'erreur suivante:
Citation:
NOTICE: CREATE TABLE will create implicit sequence "t_patient_id_patient_seq" for serial olumn "t_patient.id_patient"
ERROR: there is no unique constraint matching given keys for referenced table "t_lieu"
Je n'arrive pas à comprendre où l'unicité de la clé de contrainte entre en jeu
Guigui_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2005, 16h47   #2
Expert Confirmé
 
Avatar de Guigui_
 
Homme
Ingénieur développement logiciels
Inscription : août 2002
Messages : 1 856
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Enseignement

Informations forums :
Inscription : août 2002
Messages : 1 856
Points : 3 890
Points : 3 890
Bon, je pense avoir compris:
a priori, il suffisait de déclarer le id_lieu comme unique (ce que je pensais implicite avec le SERIAL)
Code :
1
2
3
4
5
6
CREATE TABLE T_LIEU ( 
  id_lieu serial UNIQUE, 
  LI_Ville VARCHAR(50), 
  LI_CodePostal int, 
  PRIMARY KEY(LI_Ville,LI_CodePostal) 
);
Guigui_ 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 13h35.


 
 
 
 
Partenaires

Hébergement Web