如何在 PostgreSQL 中创建自定义范围类型,例如从 1 到 100?

How do I create an custom range type in PostgreSQL for example from 1 to 100?

我有一列我想接受 1 到 100 之间的值,可以吗?我知道这是通过函数完成的,但我正在寻找一个如上所述的简单解决方案。

您可以使用检查约束:

create table foo
( 
   some_value int not null check (some_value between 1 and 100)
);

或者,如果您需要在多个表中使用,域可能会有用

create domain one_to_hundred
  as integer not null
  check (value between 1 and 100);

create table foo
( 
   some_value one_to_hundred
);

对您的范围使用检查约束:

CREATE TABLE foo (
  bar int4range NOT NULL,
  CONSTRAINT foo_bar_check CHECK (bar <@ '[0,100]'::int4range)
)
;

INSERT INTO foo(bar) VALUES('[20,30]');
INSERT INTO foo(bar) VALUES('(30,200]'); -- fail