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 03/02/2013 12:06:12

doha-i2m
Membre

clés primaires multiples

Bonjour,
Je me demande s'il est possible d'identifier plusieurs clés primaires (ou contraintes d'unicités) pour une table à condition que la violation de la contrainte ne se produit que lors de la répétition de ces attributs tous ensembles. Par exemple : nom : unique  et prénom: unique, je peut avoir "Bruno brelle" et "Bruno Bovary" mais "Bruno brelle" ne se répète plus. Cela ne marche pas et le système considère que chaque attribut ne peut se présenter qu'une seule fois.

C'est la table que j'ai crée:

create table ClassVersion (
CName text PRIMARY KEY,
VersC integer unique,
SAT date unique,
EAT date);

SAT(start application time) est une date qui peut se répéter plusieurs fois mais pas avec les mêmes valeurs Cname et VersC. Comment faire?
Merci.

Hors ligne

#2 03/02/2013 14:37:14

MitsuTomoe
Membre

Re : clés primaires multiples

create table ClassVersion (
CName text,
VersC integer,
SAT date,
EAT date,
PRIMARY KEY (SAT, CName,VersC));

Pour plus de détails : http://www.postgresql.org/docs/9.2/stat … aints.html

Alex

Hors ligne

#3 03/02/2013 14:51:05

MitsuTomoe
Membre

Re : clés primaires multiples

J'ai présumé (un peu vite) que SAT, CName et VersC ne pouvaient pas être à NULL.
S'ils peuvent être vides, il faut utiliser UNIQUE et non PRIMARY KEY : 

create table ClassVersion (
CName text,
VersC integer,
SAT date,
EAT date,
UNIQUE (SAT, CName,VersC));

Pour plus de clarté, on peut nommer la contrainte :

create table ClassVersion (
CName text,
VersC integer,
SAT date,
EAT date);

ALTER TABLE ONLY ClassVersion ADD CONSTRAINT ma_clef_unique UNIQUE (SAT, CName,VersC);

Tout est très bien expliqué dans la doc , que je vous encourage à lire.

Hors ligne

#4 03/02/2013 17:08:38

doha-i2m
Membre

Re : clés primaires multiples

je vous remercie vivement  smile

Hors ligne

Pied de page des forums