| From: | Alain Benard <alain(dot)benard(at)nancy(dot)inra(dot)fr> |
|---|---|
| To: | PG-Mail-liste <pgsql-fr-generale(at)postgresql(dot)org> |
| Subject: | Contrainte d'exclusion. |
| Date: | 2014-02-11 15:57:31 |
| Message-ID: | 52FA486B.4020009@nancy.inra.fr |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-fr-generale |
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.
Merci par avance.
Alain.
| Attachment | Content-Type | Size |
|---|---|---|
| alain_benard.vcf | text/x-vcard | 292 bytes |
| unknown_filename | text/plain | 76 bytes |
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Guillaume Lelarge | 2014-02-11 16:12:17 | Re: Contrainte d'exclusion. |
| Previous Message | Dimitri Fontaine | 2014-02-04 10:01:27 | Re: Bouger les indes les plus sollicités |