Как я могу создать таблицу с одним столбцом типа enum в базе данных postgresql? - PullRequest
0 голосов
/ 04 декабря 2018

Как мне создать таблицу с одним столбцом типа данных enum в базе данных PostgreSQL?

Имя таблицы: Employee

Столбцы:

ID: Integer

Name: ENUM

Ниже приведен запрос, но не уверен, что он правильный или нет.

CREATE TYPE Name AS ENUM();

CREATE TABLE IF NOT EXISTS Employee(
    ID integer NOT NULL,
    Name DEFAULT NULL,
    CONSTRAINT "Employee_pkey" PRIMARY KEY (id)
 );

Может кто-нибудь помочь, пожалуйста.

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Здесь у вас есть простой пример, рассмотрите возможность добавления имени к вашему столбцу enum в таблице Employee и добавьте некоторые значения к вашему enum.

 CREATE TYPE NameEnum AS ENUM('Jony','Bala','Mark');

 CREATE TABLE IF NOT EXISTS Employee(
    ID integer NOT NULL,
    name NameEnum DEFAULT NULL,
    CONSTRAINT "Employee_pkey" PRIMARY KEY (id)
 );

 Insert into Employee(ID,name)
 Values(1,  (SELECT enum_first(NULL::NameEnum)))

 Select * from Employee
 Output:

Data Output

0 голосов
/ 04 декабря 2018

1. В строке

Name DEFAULT NULL,

вы либо забыли имя столбца, либо определили столбцы как тип перечисления:

myname Name DEFAULT NULL, -- add column name

или

Name Name DEFAULT NULL, -- add enum type


2. Поскольку «Имя» является ключевым словом в Postgres , вам также необходимо изменить имя типа.В противном случае это не сработает.


3. Однако: тип перечисления не имеет значений.Таким образом, вы не можете вставить любое значение.Вы должны добавить некоторые значения перечисления:
CREATE TYPE name_type AS ENUM('name1', 'name2');


Final:
CREATE TYPE name_type AS ENUM('name1', 'name2');

CREATE TABLE Employee2(
    ID integer, 
    myname name_type
);

demo: db <> fiddle

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