Search code examples
sqlpostgresqlpostgres-14sql-domain

Set DOMAIN for existing column


I have an existing table like this:

CREATE TABLE public.data (
    id integer,
    name text,
    sell_value real)
);

and I define a domain as:

CREATE DOMAIN dataDomain AS TEXT
CHECK(name = ANY ('{joe, john, jack}'::text[]));

How can I apply the domain to the column "name"?

EDIT: I have to apply the domain in a existing table


Solution

  • You just use it like any other type:

    create table public.data (
        id integer,
        name dataDomain,
        ...
    );
    

    Documentation with examples is here.

    By the way, be aware that PostgreSQL folds identifiers to lower case unless you double-quote them: so dataDomain and datadomain are identical, but different from "dataDomain".