From: | Cédric Villemain <cedric(at)2ndquadrant(dot)com> |
---|---|
To: | pgsql-fr-generale(at)postgresql(dot)org |
Cc: | "Marie-Claude QUIDOZ" <Marie-Claude(dot)QUIDOZ(at)cefe(dot)cnrs(dot)fr> |
Subject: | Re: a la recherche d'exemple de contrainte d'exclusion |
Date: | 2012-12-05 18:26:32 |
Message-ID: | 201212051926.40458.cedric@2ndquadrant.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-fr-generale |
Bonsoir,
> Ai l'impression d'avoir compris l'utilisation des contraintes de
> vérification (ai testé la possibilité d'utiliser des fonctions paramétrées
> dans le texte). Par contre, je n'ai pas tout compris sur les contraintes
> d'exclusivité. Est-ce que vous auriez des exemples d'utilisations
> concrètes de cette contrainte ?
quelques exemples:
# create table foo (
i int,
r int8range
);
# create extension btree_gist;
# équivalent UNIQUE
# alter table foo add exclude using gist (i with =);
# insert into foo (i) values (1),(1);
ERREUR: la valeur d'une clé en conflit rompt la contrainte d'exclusion «
foo_i_excl »
DÉTAIL : La clé (i)=(1) est en conflit avec la clé existante (i)=(1).
# alter table foo drop constraint foo_i_excl;
# UNIQUE int et array (idem pour range et réservation de salle, cf doc
postgres)
# alter table foo add exclude using gist (i with =, r with &&);
# insert into foo (i,r) values (1,'[0,10]'),(1,'[11,20]');
INSERT 0 2
# insert into foo (i,r) values (2,'[0,10]');
INSERT 0 1
# insert into foo (i,r) values (2,'[30,)');
INSERT 0 1
# insert into foo (i,r) values (2,'[5,15)');
ERREUR: la valeur d'une clé en conflit rompt la contrainte d'exclusion «
foo_i_r_excl »
DÉTAIL : La clé (i, r)=(2, [5,15)) est en conflit avec la clé existante (i,
r)=(2, [0,11)).
Il y a d'autres opérateurs utilisable (cf operateurs compatibles entre type et
index gist)
en gros: (i with =) -> répond vrai avec une autre ligne dans la table, alors
rupture de la contrainte. Idem pour les autres opérateurs.
J'espère que c'est plus clair avec ces quelques exemples (c'est en gros un
UNIQUE plus complexe, UNIQUE étant uniquement '=')
--
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 | Dimitri Fontaine | 2012-12-05 21:55:26 | Re: PostgreSQL9.1 trigger avec arguments |
Previous Message | Sebastien Douche | 2012-12-05 17:43:29 | Re: Utilisation du SSD |