J'ai cherché partout une contrainte correcte et logique CHECK
pour valider qu'un e-mail est dans le bon format. Jusqu'à présent, je l'ai trouvé vraiment long et expressions comme inutiles:Vérification de la contrainte pour les e-mails dans une base de données Oracle
create table t (
email varchar2(320) check (
regexp_like(email, '[[:alnum:]][email protected][[:alnum:]]+\.[[:alnum:]]')
)
);
et
create table stk_t (
email varchar2(320) check (
email LIKE '%@%.%' AND email NOT LIKE '@%' AND email NOT LIKE '%@%@%'
)
);
Il y a sûrement un moyen plus simple? J'utilise la base de données Oracle 11g et SQL Developer IDE. C'est ce que j'ai:
constraint Emails_Check check (Emails LIKE '%[email protected]%_._%')
Quelqu'un peut-il s'il vous plaît laissez-moi savoir si cela est la façon la plus efficace de validation des e-mails?
'très long et inutile expressions' plus par regexes email sont _beaucoup_ plus longues et plus compliquées que cela. Jetez un oeil [ici] (http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address) pour commencer à réfléchir à ce sujet. –
Je ne vois rien de "superflu" dans ces expressions. Bien au contraire: la partie locale ne doit contenir aucun '@'; un domaine de premier niveau doit comporter au moins deux lettres; etc. Vous allez vous retrouver avec un regexp_like plus complexe. Peut-être préféreriez-vous un déclencheur au lieu d'une contrainte, vous pouvez donc utiliser PL/SQL pour vérifier la chaîne et déclencher une exception si elle ne confirme pas les règles pour une adresse e-mail. –
Votre contrainte de vérification considère '@@ ...' une adresse e-mail valide, ce qui n'est évidemment pas le cas. –