首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否有方法将PostgreSQL列定义为Enum?

是否有方法将PostgreSQL列定义为Enum?
EN

Stack Overflow用户
提问于 2022-07-02 21:39:39
回答 1查看 390关注 0票数 0

在PostgreSQL DB中,假设您想要添加一个名为vehicle_type的列,并且只希望出现以下3个条目中的一个:cartruckmotorcycle。我以为会有一个方法来定义它,但尝试一个我可能,并阅读了很多文章,我不知道如何做。

注意:我正在使用DBeaver客户端,但也可以运行任何SQL命令。

有办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-02 21:50:45

代码语言:javascript
运行
复制
CREATE TYPE vehicle_type AS ENUM ('car', 'truck', 'motorcycle');
-- add column with default
ALTER TABLE tbl ADD COLUMN v_type vehicle_type NOT NULL DEFAULT 'car';

请在这里阅读手册。

由于“您只希望以下3个条目中的一个可能出现”,因此也使其不为空。

一个enum占用4个字节。为了将磁盘占用保持在最低限度,您可以选择使用一个占用1字节的"char"字段;

代码语言:javascript
运行
复制
ALTER TABLE tbl
  ADD column v_type2 "char" NOT NULL DEFAULT 'c'
, ADD CONSTRAINT v_type_allowed CHECK (v_type2 IN ('c', 't', 'm'));

正面:小,快。

缺点:Postgres-特定的,可读性较低。

db<>fiddle https://dbfiddle.uk/?rdbms=postgres_14&fiddle=bdeec59353fb7493f0ccdfa258d11094

请参见:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72842588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档