带约束的 Postgres 自定义类型

Hoo*_*pes 3 postgresql datatypes postgresql-12

我想知道是否可以(和/或可取)创建对值进行约束的自定义类型。假设我有一个高度/宽度/长度的自定义类型:

CREATE TYPE dimensions AS (w float, h float, l float);

我想确保我的宽度都不大于 10(例如)。

这样的事情可能吗,或者我会更好地在使用这种类型的每个表上创建检查约束吗?我希望能够在单个位置(即类型本身)添加/编辑约束。

谢谢!

小智 5

您可以根据您的类型创建域。

create domain checked_dimensions 
   as dimensions
   constraint check_size check ( (value).w <= 10 );
Run Code Online (Sandbox Code Playgroud)

请注意关键字周围的括号value。它们看起来多余,但在本例中是必需的。

然后使用该类型checked_dimensions作为您的列类型