この質問は緩くHow can I create a constraint to check if an email is valid in postgres?タイプでPostgresqlの正規表現ではなく、チェック制約
をオフに基づいている私は、文字列型を使用し、チェック制約を経由して、それを制約することができます知っている:)
CREATE TABLE emails (
email varchar
CONSTRAINT proper_email CHECK (email ~* '^[A-Za-z0-9._%-][email protected][A-Za-z0-9.-]+[.][A-Za-z]+$')
を。構文は次のようになりますように
しかし、私は、カスタムタイプを作成できるようにしたいのですが、次の
create table emails (
email email_address
);
私は
CREATE TYPEがここで使用のだろうと思っているだろう
が、これではありませんので、コンポジット、範囲、列挙型など、私はそれにどのようにアプローチするのか分かりません。
これは、同じチェック制約を持つ複数のテーブルがあるためです。私は、すべてのテーブルを1つずつ調べるのではなく、1つの場所(おそらくタイプを介して)で制約を微調整したいと思います。私はテーブル定義をより良く見えるようにすることもできると思います(電子メールではありませんが、 "email_address"タイプで解決された場合は直接適用可能です)。
documentationには、入出力機能を使用して文字列を特定のタイプにオートボックスすることができます。おそらく、私が無効なcstringを受け取ったときに例外を発生させたとしても、それはそのように動作するかもしれませんが、結局のところ、文字列にしたいと思っていることを考えると、ほんの少しの構文的な砂糖/重複除外。
私が望んでいる可能性と同じくらい完璧な答えです。ありがとう! –