如何在Postgresql数据库中创建具有一列枚举数据类型的表?

时间:2018-12-04 14:41:22

标签: postgresql

如何在PostgreSQL数据库中创建具有一列enum数据类型的表?

表名: 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 :(得分:2)

这里有一个简单的示例,考虑为Employee Table的enum列添加一个名称,并为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

答案 1 :(得分:1)

1。在行

db.collection.update(

    { 
         "_id": "507f1f77bcf86cd799439011",  // id field
            "answers.upVotes._id":"507f1f77bcf86cd799439011" //id  array
    } 
    ),{
     "$set":{"answers.$.upVotes": {userId :"507f1f77bcf86cd799439011"}}},//edit

//use "addToSet" for add

您要么忘记了列的名称,要么将列定义为枚举类型:

Name DEFAULT NULL,

myname Name DEFAULT NULL, -- add column name


2。。由于"Name" is a keyword in Postgres,您还必须更改类型名称。否则它将不起作用。


3。。但是:您的枚举类型没有值。因此,您将无法插入任何值。您必须添加一些枚举值:

Name Name DEFAULT NULL, -- add enum type


最终:

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

demo: db<>fiddle