Postgresql добавить проверку на пустой массив - PullRequest
0 голосов
/ 30 марта 2020

Есть ли способ добавить правило ограничения в таблицу

CREATE TABLE table1
(
    id                        serial not null primary key,
    values1                   smallint[] not null DEFAULT ARRAY [12, 20],
    values2                   smallint[] not null DEFAULT ARRAY [],

    CONSTRAINT constraint_check_error CHECK (values1 NOT ( IS NULL OR values1 = '{}') AND NOT (values2 IS NULL OR values2 = '{}') )
);

, чтобы таблицы values1 и values2 не были пустыми?

Ответы [ 2 ]

1 голос
/ 30 марта 2020

Не нужно NOT ( IS NULL... в ограничении, потому что у вас уже есть not null в определении таблицы, вы можете сделать так:

CREATE TABLE table1
(
    id                        serial not null primary key,
    values1                   smallint[] not null DEFAULT ARRAY [12, 20],
    values2                   smallint[] not null DEFAULT '{}',
    CONSTRAINT values1_check CHECK ( values1 <> '{}' ),
    CONSTRAINT values2_check CHECK ( values2 <> '{}' )
);
1 голос
/ 30 марта 2020

Вы можете добавить проверочное ограничение:

alter table table1 add constraint check_table1_arrays
    check (cardinality(values1) > 0 and cardinality(values2) > 0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...