Re: Contrainte d'exclusion.

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

In response to

Browse pgsql-fr-generale by date

  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