【发布时间】:2021-01-19 11:23:05
【问题描述】:
我有一列我想接受从 1 到 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
【讨论】: