Есть ли способ применить конкретную строковую структуру для столбца Postgres? - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть поле в базе данных, которое представляет собой строку вида XXXYYXXXX, где X - это числа, а Y - это буквы. Есть ли способ определить таблицу таким образом, чтобы попытаться вставить новую строку в случае сбоя этого полясовпадение вызывает ошибку?

Я бы знал, как это сделать, если бы я работал с БД через ORM, но мне не приходилось выполнять такую ​​проверку в чистом SQL.

1 Ответ

0 голосов
/ 14 сентября 2018

Вы можете определить проверочное ограничение , используя регулярное выражение , например ::

create table my_table(
    id serial primary key, 
    str text check (str ~ '^[a-zA-Z]{3}[0-9]{2}[a-zA-Z]{3}$')
);

insert into my_table values
(default, 'abc99def')
returning *;

 id |   str    
----+----------
  1 | abc99def
(1 row)

insert into my_table values
(default, '1bc99def')
returning *;

ERROR:  new row for relation "my_table" violates check constraint "my_table_str_check"
DETAIL:  Failing row contains (2, 1bc99def).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...