#postgresql #range-types
#postgresql #типы диапазона
Вопрос:
У меня есть столбец, в котором я хочу принимать значения от 1 до 100, возможно ли это? Я знаю, что это достигается с помощью функций, но я ищу простое решение, как упоминалось выше.
Ответ №1:
Вы можете использовать ограничение проверки:
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
);
Ответ №2:
Используйте контрольное ограничение для вашего диапазона:
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