Oracle 11g - Vérification de la contrainte avec la RegEx
Je suis à l'aide d'Oracle 11g, et en essayant de créer une table de définir des contraintes sur la création.
J'ai essayé d'ajouter la contrainte de vérification afin de valider certaines informations (comme l'e-mail, numéro de téléphone, etc...)
Est-il quelque chose dans Oracle 11g qui me permettrait de faire quelque chose comme cela?
constraint CK_CONSTRAINT_NAME check (EMAIL like 'REGEX')
La regEx que je voulais utiliser (extrait d'regexLib) est:
^[a-zA-Z][a-zA-Z0-9_\.\-]+@([a-zA-Z0-9-]{2,}\.)+([a-zA-Z]{2,4}|[a-zA-Z]{2}\.[a-zA-Z]{2})$
Je pense Oracle 11g (corrigez-moi si je me trompe) ne prend pas en charge ce format pour les RegEx...
J'ai vu des méthodes à l'aide de REGEX_LIKE, mais il semble être la seule à travailler dans WHERE
clauses.
J'aimerais le garder comme une contrainte de vérification et pas un déclencheur ou une fonction externe/script.
Aussi, j'ai lu dans d'autres threads ici, quelqu'un qui me dit RegEx " ne sont pas un bon moyen de vérifier l'adresse e-mail de format et de telles informations. Aucune raison n'a été donnée dans le commentaire, et j'aimerais savoir pourquoi, si une raison quelconque, il n'est!
alum
"? Inutile de quantificateurs? Absence de ponctuation? A côté de cela, la regex n'est pas bon pour la validation des adresses e-mail parce que le format est trop variable pour une fiable regex (vous aurez toujours miss valide mails et accepter des invalides). Le meilleur que vous pouvez faire est de vérifier la présence d'un @
signe, et essayez d'envoyer un e-mail de confirmation. Si cela réussit, et si vous obtenez un retour de courrier, vous connaissez l'adresse est valide et actif.Désolé, j'ai changé les regEx pour le réel, C'était une sorte de mash up de l'original et quelque chose que j'ai essayé à partir de la documentation d'Oracle.
OriginalL'auteur Pacane | 2011-10-01
Vous devez vous connecter pour publier un commentaire.
Une contrainte check suit les mêmes règles de syntaxe que les conditions de la clause where:
Plus de détails dans le manuel:
Edit:
Il y a cependant quelques restrictions sur ce que vous pouvez réellement utiliser dans une contrainte de vérification:
Il n'est pas tout à fait vrai que " qui peut être utilisé dans un endroit OÙ la condition peut être utilisé dans une contrainte de vérification." Par exemple, une contrainte de vérification ne peut pas se référer à des colonnes dans d'autres tableaux, ne peut pas faire des appels à des fonctions qui ne sont pas déterministes, et ne peut pas faire des appels à des fonctions définies par l'utilisateur. Voir Restrictions sur les Contraintes Check [11g Release 2 (11.2)].
bon point, merci. Je faisais allusion à la syntaxe, plutôt qu'à de véritables expressions. J'ai précisé mon post.
Les liens sont cassés :/
merci, mis à jour
OriginalL'auteur a_horse_with_no_name