From: | Cédric Villemain <cedric(at)2ndquadrant(dot)fr> |
---|---|
To: | pgsql-fr-generale(at)postgresql(dot)org, alain(dot)benard(at)nancy(dot)inra(dot)fr |
Subject: | Re: Contrainte d'exclusion. |
Date: | 2014-02-14 12:00:49 |
Message-ID: | 201402141300.49255.cedric@2ndquadrant.fr |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-fr-generale |
Voir http://www.postgresql.org/docs/9.3/static/indexes-opclass.html pour
trouver tous les opérateurs disponibles
et http://www.postgresql.org/docs/9.3/static/indexes-types.html pour les
opérateurs standards correspondant aux différents index (globalement l'idée est
simple: certains type de données sont 'entiers', d'autres sont des 'ranges' ou
des 'tableaux' ou ..., il y a donc des notions de chevauchement qui n'existent
pas pour un entier naturel par exemple)
Le mardi 11 février 2014 17:27:15, Alain Benard a écrit :
> Merci bien.
>
> Le 11/02/2014 17:12, Guillaume Lelarge a écrit :
> > On Tue, 2014-02-11 at 16:57 +0100, Alain Benard wrote:
> >> Bonjour,
> >> je souhaite réaliser une contrainte d'exclusion pour interdire par
> >> exemple que 2 personnes réservent un même objet au même moment.
> >> En premier lieu j'ai une table 'matable' avec un champ 'champ_periode'
> >> de type daterange
> >> Je positionne la contrainte suivante
> >>
> >> ALTER TABLE matable
> >>
> >> ADD CONSTRAINT contrainte_periode
> >>
> >> EXCLUDE USING gist (champ_periode WITH &&);
> >>
> >> C'est syntaxiquement correct et avec cette contrainte il ne peut plus y
> >> avoir aucun chevauchement de période de réservation (tout objet ou toute
> >> personne confondue) ce qui n'est pas vraiment mon besoin. Ce que je veux
> >> c'est en plus la prise en compte de l'identifiant d'une personne (champ
> >> de type integer).
> >> Je positionne donc la contrainte suivante
> >>
> >> ALTER TABLE matable
> >>
> >> ADD CONSTRAINT contrainte_periode
> >>
> >> EXCLUDE USING gist (
> >>
> >> id_personne WITH = ,
> >> champ_periode WITH &&);
> >>
> >> J'obtiens les messages suivants :
> >> ERROR: data type integer has no default operator class for access
> >> method "gist"
> >> HINT: You must specify an operator class for the index or define a
> >> default operator class for the data type.
> >>
> >> J'ai pourtant vu ce type d'exemple à plusieurs reprise dans mes
> >> recherches sur le web et je ne sais pas quoi utiliser comme syntaxe pour
> >> arriver à mes fins.
> >
> > Vous devez installer l'extension btree_gist pour cela.
--
Cédric Villemain +33 (0)6 20 30 22 52
http://2ndQuadrant.fr/
PostgreSQL: Support 24x7 - Développement, Expertise et Formation
From | Date | Subject | |
---|---|---|---|
Next Message | Sebastien Douche | 2014-02-14 17:00:44 | Re: Aide sur pg_upgrade : il ne lance pas le nouveau postmaster |
Previous Message | Cédric Villemain | 2014-02-14 11:56:26 | Re: Aide sur pg_upgrade : il ne lance pas le nouveau postmaster |