powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / вопрос по массивам и ограничения на их элементы при создании таблицы
6 сообщений из 6, страница 1 из 1
вопрос по массивам и ограничения на их элементы при создании таблицы
    #32578448
kiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени.

;) Я пытаюсь наложить ограничения на два элемента массива в таблице при создании.
(к сожалению я не нашёл ответа в книге O'Reilly - Postgres, google тоже не помог)
для одного элемента понятно


CREATE TABLE foobar (
......
fooarray int[] DEFAULT '{0, 1440}' CHECK KEY (fooarray[1] between 0 AND 1399),
......
);

подскажите как мне установить это ограничение не только на этот элемент массива но и ещё на второй, т.е. в идиале я хочу сделать ограничение такое:

0 < forarray[1] < 1399 && 0 < forrarray[2] < 1440 && forarray[1] < forrarray[2]

заранее спасибо за ответы
с уважением ;)
...
Рейтинг: 0 / 0
вопрос по массивам и ограничения на их элементы при создании таблицы
    #32578451
kiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ненашёл, как изменить своё сообщение, посему добавляю так.

не предлагать использовать триггер :) интересует именно КОНСТРУКЦИЯ CHECK

ещё раз заранее спасибо за ваши ответы.
...
Рейтинг: 0 / 0
вопрос по массивам и ограничения на их элементы при создании таблицы
    #32578460
kiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
:) ответ нашёлся после чтения документации на www.postgres.org ;)

если кому интересно решение:

CREATE TABLE products (
product_no integer,
name text,
price numeric CHECK (price > 0),
discounted_price numeric,
CHECK (discounted_price > 0 AND price > discounted_price)
);


хм ;) но теперь остается вопрос!

можно ли поставить ограничение на __ВСЕ__ элементы массива?

ещё раз спасибо заранее ;)
...
Рейтинг: 0 / 0
вопрос по массивам и ограничения на их элементы при создании таблицы
    #32580115
gamych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kikiненашёл, как изменить своё сообщение, посему добавляю так.

не предлагать использовать триггер :) интересует именно КОНСТРУКЦИЯ CHECK

ещё раз заранее спасибо за ваши ответы.
Не хочешь триггер - не надо. Пиши хранимую процедуру, возвращающую bool, передавай ей поле - внутри проверяй всё, что угодно.
...
Рейтинг: 0 / 0
вопрос по массивам и ограничения на их элементы при создании таблицы
    #32581272
Sad Spirit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kikiможно ли поставить ограничение на __ВСЕ__ элементы массива?


можно:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Welcome to psql  7 . 4 . 2 , the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help on internal slash commands
       \g or terminate with semicolon to execute query
       \q to quit

test=# CREATE TABLE foo (
test(#     bar integer[],
test(#     CONSTRAINT bar_positive CHECK ( 0  < ALL(bar))
test(# );
CREATE TABLE
test=# INSERT INTO foo VALUES ('{1,2,3}');
INSERT  178322   1 
test=# INSERT INTO foo VALUES ('{-1,2,3}');
ERROR:  new row for relation "foo" violates check constraint "bar_positive"
...
Рейтинг: 0 / 0
вопрос по массивам и ограничения на их элементы при создании таблицы
    #32581843
kiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
огромное спасибо, именно то что я искал
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / вопрос по массивам и ограничения на их элементы при создании таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]