Vous n'êtes pas identifié(e).
Pages : 1
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
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
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
je vous remercie vivement
Hors ligne
Pages : 1