Создать пользовательский тип W / REGEX PATTERN в PostgreSQL - PullRequest
1 голос
/ 26 мая 2020

У меня есть особые типы, в которых есть C и следующие 8 целых чисел, например C21032011. Я бы хотел применить этот составной тип - один Capital C и следующие 8 целых чисел.

Как мне достичь этого ограничения?

Ответы [ 2 ]

2 голосов
/ 26 мая 2020

Вы можете создать домен с проверочным ограничением.

create domain my_number_type as text
   constraint check_valid_number check (value is not null and value ~ '^C[0-9]{8}$');

Затем используйте этот домен везде, где вы хотите применить такое ограничение:

create table some_table
(
  ...,
  some_nr my_number_type,
  ...
);
1 голос
/ 26 мая 2020

Вы можете использовать ограничение CHECK с регулярным выражением в определении столбца, чтобы предотвратить вставку строк, не соответствующих вашему шаблону.

Например,

CREATE TABLE mytable(
...,
mycolumn text CONSTRAINT myformat CHECK mycolumn ~ '^C[0-9]{8}$',
...,
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...