如何为基于复合类型的 Postgres DOMAIN 定义 CHECK 约束

How to define CHECK constraint for a Postgres DOMAIN that is based on a composite type

我想定义一个带有基于自定义复合类型的检查约束的 Postgres 域。

一个天真的方法的例子是这样的:

CREATE TYPE raw_comp_foo AS (
    min_value    integer,
    max_value    integer
);
CREATE DOMAIN comp_foo AS raw_comp_foo
CHECK (VALUE.min_value < VALUE.max_value);

但是,我收到错误消息 missing FROM-clause entry for table "value"。 如何在上面的示例中实现所需的约束?

将复合类型值放在括号中:

CREATE DOMAIN comp_foo AS raw_comp_foo
CHECK ((VALUE).min_value < (VALUE).max_value);