How can I create a constraint to check if an email is valid in postgres?

后端 未结 4 566
有刺的猬
有刺的猬 2020-12-25 12:02

How can I create a constraint to use a regular expression in postgres?

4条回答
  •  长发绾君心
    2020-12-25 12:37

    I recommend using an existing email address parsing module instead of making up your own pattern matching. For example:

    CREATE OR REPLACE FUNCTION check_email(email text) RETURNS bool
    LANGUAGE plperlu
    AS $$
    use Email::Address;
    
    my @addresses = Email::Address->parse($_[0]);
    return scalar(@addresses) > 0 ? 1 : 0;
    $$;
    
    CREATE TABLE emails (
        email varchar
        CONSTRAINT proper_email CHECK (check_email(email))
    );
    

提交回复
热议问题