ドメイン

基本となる型に制約やデフォルト値などを付加したものをドメインとして定義することができる。
ドメインはテーブル作成の際、列の型として使用することができる。

CREATE DOMAIN ドメイン名 AS 基本となる型 [制約] [DEFAULT デフォルト値];

定義中で使用されるVALUEは、後にこのドメインが型として使用されたときの列の値を意味する。

  1. ログイン画面から実行。

    oddtbs=> create domain gen01 as integer check(value in (1, 2)) default 1;
    CREATE DOMAIN
    
  2. 次のSQLをファイルとして作成。(domain041.sql)

    
    
  3. ログイン画面から実行。

    oddtbs=> \i domain041.sql
    ...
    oddtbs=> insert into emp (name) values('鈴木義男');
    INSERT 0 1
    oddtbs=> insert into emp (name, gender) values('斎藤洋子', 2);
    INSERT 0 1
    oddtbs=> insert into emp (name, gender) values('山田美樹', 3);
    ERROR:  value for domain gen01 violates check constraint "gen01_check"
    oddtbs=> select * from emp;
     code |   name   | gender
    ------+----------+--------
        1 | 鈴木義男 |      1
        2 | 斎藤洋子 |      2
    (2 rows)
    
    ※ ドメインによる制約やデフォルト値が有効となっていることが確認できる。