PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

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

#1 06/05/2012 12:19:25

Miflon
Membre

Domain et identificateur

Bonjour à toutes et à tous.
Nouveau dans l'utilisation de Postgresql (version 9.0), je me demande comment créer un "domain" relatif au type d'une clé primaire. Le type "serial" n'étant pas présent dans la liste des types au moment de la création du "domain". Pendant que j'y suis, comment appliquer des contraintes à un "domain", là j'avoue ne pas avoir bien cherché!!!
Pour la création d'autres "domain", pas de problème.
Un remerciement anticipé pour vos réponses.

Hors ligne

#2 06/05/2012 12:43:12

rjuju
Administrateur

Re : Domain et identificateur

Bonjour,
Je ne comprends pas ce que vous entendez par "créer un domain relatif au type d'une clé primaire". Si vous voulez gérer une séquence sur le domaine, toutes les tables utilisant ce domaine partageraient la même séquence ce qui n'est en général pas le but recherché.

Sinon, pour ajouter une contrainte à un domaine, vous devez faire un ALTER DOMAIN nom_domaine ADD CONSTRAINT nom_contrainte CHECK ( ... );

Hors ligne

#3 06/05/2012 16:42:47

Miflon
Membre

Re : Domain et identificateur

Excusez moi pour l'imprécision avec laquelle je m'exprime! J'utilise PGAdmin III pour créer une base de données.
Par exemple une table est composée de deux colonnes, ADH_ID (clé primaire) et ADH_NOM. Je désire définir les domaines de définition des valeurs de ces deux colonnes. Pour ADH_NOM, pas de problème ce sera D_A_NOM de type varchar(32). Quel doit être le type de ADH_ID? Je pensais, peut-être naïvement, utiliser le type "serial", mais il n'est pas disponible dans la liste proposée par PGAdmin.
Merci de m'aider à progresser.

Hors ligne

#4 06/05/2012 16:57:40

gleu
Administrateur

Re : Domain et identificateur

Je ne sais pas quelle version de pgAdmin vous avez mais il me propose bien le type serial.


Guillaume.

Hors ligne

#5 06/05/2012 18:02:37

rjuju
Administrateur

Re : Domain et identificateur

Voulez-vous créer un domaine avec un type de base à serial ou utiliser le type serial pour votre champ ADH_ID ?
Pour le 1er choix, c'est normal que le type serial ne soit pas disponible, dans le 2ème cas ce n'est pas normal.

Hors ligne

#6 07/05/2012 14:22:35

Miflon
Membre

Re : Domain et identificateur

Bonjour à toutes et à tous.
A gleu :  ma version de pgadmin tournant sous linux est 1.12.2
A rjuju : je prends bonne note qu'il n'est pas possible de créer un domaine de définition de type serial. Donc Pour faire ce que je souhaite je crois qu'il faut :
1°) définir un domaine d'entiers non nuls D_N_ID
2°) créer la clé primaire dont le type appartient à D_N_ID
3°) créer un index ascendant avec un caractère d'unicité sur la colonne XXX_ID.
Est-ce correct?
Merci d'avance pour vos remarques.

Hors ligne

#7 07/05/2012 14:29:41

rjuju
Administrateur

Re : Domain et identificateur

Une clé primaire implique une clause NOT NULL. De plus, créer une clé primaire créé implicitement un index sur le champ.

Donc, déclarer ce champ en serial et primary key suffira.

Hors ligne

#8 09/05/2012 09:23:30

Miflon
Membre

Re : Domain et identificateur

Merci à tous pour vos réponses. Je me suis replongé dans le manuel de postgresql 9.0.
Le type "serial" n'est pas un vrai type, mais un raccourci de notation qui notamment assigne un générateur de séquence à une colonne. La séquence devant être supprimée si la colonne ou la table le sont. C'est sans doute la raison pour laquelle un domaine ne peut être "serial". Comme l'a écrit rjuju, déclarer une clé primaire sur une colonne de type "serial" suffit.
A bientôt (plus que probable) et merci encore.

Hors ligne

Pied de page des forums