Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#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 ( ... );
Julien.
https://rjuju.github.io/
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.
Julien.
https://rjuju.github.io/
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.
Julien.
https://rjuju.github.io/
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
Pages : 1