PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 08/02/2012 13:50:51

abenhamdine
Membre

Contraintes CHECK sur regexp

Bonjour,

Est il possible dans pg de mettre en place des contraintes CHECK basée sur une expression régulière ?
C'est à dire que la contrainte serait violée si la valeur insérée ne satisfait pas à l'expression régulière ?

D'avance merci.

Cdlt, Arnaud.

Hors ligne

#2 08/02/2012 15:57:58

cedric
Membre

Re : Contraintes CHECK sur regexp

oui


Cédric Villemain +33 (0)6 20 30 22 52
http://2ndQuadrant.fr/
PostgreSQL: Support 24x7 - Développement, Expertise et Formation

Hors ligne

#3 09/02/2012 11:35:00

abenhamdine
Membre

Re : Contraintes CHECK sur regexp

Bonjour,

Merci pour cette confirmation.

Après consultation de la doc, je ne trouve pas d'exemple d'une telle contrainte

J'ai trouvé sur la FAQ PG de developpez.com l'exemple suivant :

ALTER TABLE matable 
  ADD CONSTRAINT numerotel_check CHECK (numerotel ~ '^[0-9]{10,}$'::text);

Est la bonne façon de procéder ?

D'avance Merci.

cedric a écrit :

oui

Hors ligne

#4 09/02/2012 12:48:03

Marc Cousin
Membre

Re : Contraintes CHECK sur regexp

Oui, c'est la bonne façon de procéder. Même si je ne vois pas bien l'intérêt du ::text, vu que '^[0-9]{10,}$' est déjà du texte.

L'autre façon, si il y a plusieurs numero de telephone dans la base, et que ce check risque de se trouver un peu partout, c'est de créer un domaine : http://docs.postgresql.fr/9.1/sql-createdomain.html

Un domaine, c'est un type + une contrainte CHECK. Et là, en plus, il y a un bel exemple avec une expression régulière en bas de page smile


Marc.

Hors ligne

#5 09/02/2012 14:59:07

abenhamdine
Membre

Re : Contraintes CHECK sur regexp

Merci !

Je n'avais pas pensé aux domaines...

C'est typiquement l'usage que je vais en faire.

Encore merci et bravo pour la qualité des réponses de ce forum.

Cdlt, Arnaud.

Hors ligne

Pied de page des forums