Vous n'êtes pas identifié(e).

#1 26/05/2010 17:55:02

LeHibou
Membre

Menu déroulant de valeurs dans Edition de table

[PostgrSQL 8.4 - pgAdmin 3 - OSX 10.6]
[Posté également sur developpez.net]


Bonjour à tous,

Décidément, ces derniers jours je poste beaucoup. Avant de migrer vers PostgreSQL, j'utilisais MySQL. Celui-ci possède un type de donnée qui s'appelle "enum".

Celui-ci me permettait d'avoir le choix d'une valeur dans une liste qui se déroulait. C'est très pratique pour savoir directement ce qu'on a comme choix et ne pas perdre de temps à se faire ramoner pour viol de contrainte.

Alors, pour contourner le problème j'ai créé d'autres tables pour simuler cet "enum". De par les lectures que j'ai eues, il semble que c'est là le moyen le plus propre de procéder.

Voici une base de donnée factice, dont le but est de savoir si un individu a des cheveux et de définir leur couleur:

-- Table: test."Table1"
 
-- DROP TABLE test."Table1";
 
CREATE TABLE test."Table1"
(
  possede_cheveux character varying NOT NULL,
  "Couleur_cheveux" character varying,
  CONSTRAINT "Table1_pkey" PRIMARY KEY (possede_cheveux),
  CONSTRAINT "Table1_Couleur_cheveux_fkey" FOREIGN KEY ("Couleur_cheveux")
      REFERENCES test."Choix_Couleur" ("Couleur") MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE CASCADE,
  CONSTRAINT "Table1_possede_cheveux_fkey" FOREIGN KEY (possede_cheveux)
      REFERENCES test."Choix_Possede" ("Choix") MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE CASCADE
)
WITH (
  OIDS=FALSE
);
ALTER TABLE test."Table1" OWNER TO postgres;
 
-- Index: test.fki_
 
-- DROP INDEX test.fki_;
 
CREATE INDEX fki_
  ON test."Table1"
  USING btree
  ("Couleur_cheveux");

liée à ces deux tables ci dessous:

-- Table: test."Choix_Couleur"
 
-- DROP TABLE test."Choix_Couleur";
 
CREATE TABLE test."Choix_Couleur"
(
  "Couleur" character varying NOT NULL,
  CONSTRAINT "Choix_Couleur_pkey" PRIMARY KEY ("Couleur")
)
WITH (
  OIDS=FALSE
);
ALTER TABLE test."Choix_Couleur" OWNER TO postgres;

et

-- Table: test."Choix_Possede"
 
-- DROP TABLE test."Choix_Possede";
 
CREATE TABLE test."Choix_Possede"
(
  "Choix" character varying NOT NULL,
  CONSTRAINT "Choix_Possede_pkey" PRIMARY KEY ("Choix")
)
WITH (
  OIDS=FALSE
);
ALTER TABLE test."Choix_Possede" OWNER TO postgres;

La question devient donc:
Peut-on, lorsqu'on ajoute des données à la Table 1, avoir un petit menu déroulant reprenant les valeurs de la table liée par la clé étrangère , et ce pour chaque colonne?

Je vous remercie par avance,

A bientôt,

LeHibou2

Hors ligne

#2 26/05/2010 18:36:52

gleu
Administrateur

Re : Menu déroulant de valeurs dans Edition de table

Peut-on, lorsqu'on ajoute des données à la Table 1, avoir un petit menu déroulant reprenant les valeurs de la table liée par la clé étrangère , et ce pour chaque colonne?

Dans pgAdmin, non.Mais c'est une fonctionnalité souhaitée et qui devrait être implanté pour la prochaine version qui va bientôt être en développement. Même chose pour les enums qui existent depuis la version 8.4.


Guillaume.

Hors ligne

#3 26/05/2010 21:19:13

LeHibou
Membre

Re : Menu déroulant de valeurs dans Edition de table

Merci de votre réponse gleu.

J'en prends bonne note et patiente.

A bientôt!

LeHibou

Hors ligne

#4 31/05/2010 08:24:34

Marc Cousin
Membre

Re : Menu déroulant de valeurs dans Edition de table

Par ailleurs, il y a aussi un type enum sous PostgreSQL

http://docs.postgresql.fr/8.4/datatype-enum.html


Marc.

Hors ligne

Pied de page des forums