Postgresql: как создавать типы в postgresql - PullRequest
0 голосов
/ 25 октября 2018

Я новичок в postgresql.Я хочу создать типы в SQL с указанными ниже значениями, но застрял, чтобы создать то же самое.

Я понимаю, что это похоже на таблицу, но я не могу найти решение.

Я хочу создатьследующие типы, использующие postgresql

"Completed", "Pending", "Failed", "Created"

1 Ответ

0 голосов
/ 26 октября 2018

Правильный способ сделать это - использовать таблицу поиска и внешний ключ:

create table status
(
   id   integer primary key,
   name text not null 
);

insert into status (id, name) 
values
  (1, 'Completed'),
  (2, 'Pending'),
  (3, 'Failed'),
  (4, 'Created');

create table some_table
(
   id integer primary key, 
   status_id integer not null references status
);

Это наиболее гибкий способ справиться с этим в реляционной базе данных.

Если вы знаете, что вряд ли когда-нибудь измените эти значения, вы можете использовать проверочное ограничение:

create table some_table
(
   id integer primary key, 
   status text not null, 
   constraint check_status 
       status in ('Completed', 'Pending', 'Failed', 'Created')
);

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

Третий вариант - использовать тип перечисления

create type status_type AS ENUM (''Completed', 'Pending', 'Failed', 'Created');

Затем использовать этот тип в таблице:

create table some_table
(
   id integer primary key, 
   status status_type not null
);

Это имеет такое же требование к хранилищу, как и решение с внешним ключом, но отображает статус «открытый текст».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...