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

标签 postgresql check-constraints

我想定义一个带有基于自定义复合类型的检查约束的 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);

但是,我收到错误消息缺少表“value”的 FROM 子句条目。 如何实现上例中所需的约束?

最佳答案

将复合值放在括号中:

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

此问题在Accessing Composite Types.中进行了解释。

关于postgresql - 如何为基于复合类型的 Postgres DOMAIN 定义 CHECK 约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72459476/

相关文章:

postgresql - 在 rust-postgres 中使用固定精度数字的正确方法是什么?

arrays - Postgres : why does this GIN index not used for this "object in array" query

mysql - MySQL 中的 CHECK 约束不起作用

Oracle:如何用 case when 制定复杂的约束

postgresql - 使用 dart 和 postgresql 按查询排序

arrays - jsonb 上的 Postgresql 数组交集

sql - Oracle:在 PostgreSQL 中有与 ROW 等价的东西吗?

sql-server - SQL Server 跨表约束

sql - Oracle SQL Developer 限制数据类型 char(5) 的字符数