Ett gäng av dessa svar är nära till rätt väg. Det här är poängen för min inlämning.
- Du vill använda en domän -- INTE regelsystemet.
- Du vill INTE validera dessa e-postadresser med ett regex. (Uppdatering mars 2017:inte riktigt sant längre)
Jag visar två metoder för hur man gör detta på DBA.StackExchange.com . Både för att leta efter MX-posten och även använda HTML5-specifikationen. Här är kort och gott.
CREATE EXTENSION citext;
CREATE DOMAIN email AS citext
CHECK ( value ~ '^[a-zA-Z0-9.!#$%&''*+/=?^_`{|}~-]example@sqldat.com[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$' );
SELECT 'example@sqldat.com'::email;
SELECT CAST('example@sqldat.com' AS email);
För mer information jag högt föreslår att du läser svaret i sin helhet
. I svaret visar jag också hur du skapar en DOMAIN över Email::Valid , och förklara varför jag inte längre använder den metoden.