【PostgreSQL】创建枚举类型和修改枚举值

news/2024/5/19 1:44:55 标签: postgresql, 数据库, sql, 枚举, database

1.说明

sql>postgresql中可以定义枚举数据类型,但是它可以增加和修改枚举值,不能删除已经定义好的枚举

2.创建枚举类型

创建枚举类型的语法如下,注意枚举类型的顺序就是枚举值的顺序

sql">CREATE TYPE order_status_enum AS ENUM ('START','WAIT_ACCOUNT');

在表中使用枚举

CREATE TABLE "public"."order" (
"id" int4 NOT NULL DEFAULT nextval('order_id_seq'::regclass),
"status" "public"."order_status_enum" NOT NULL DEFAULT 'START'::order_status_enum,
);

3.增加和修改枚举

如果你想要在已经定义好的枚举类型中添加新的枚举值,以使用下面的写法

sql">ALTER TYPE order_status_enum ADD VALUE 'END';

4.修改枚举

如果你对某个枚举值不满意,可以直接修改它

sql">ALTER TYPE order_status_enum RENAME VALUE 'END' TO 'FINISH';

5.删除枚举

如果想要删掉某个枚举值,操作方法是,重新定义一个枚举类型替换掉原有的枚举类型,比如说我这里有一个order表,它的status字段是名为order_status_enum的枚举类型

sql"># 1.将原有枚举改名
ALTER TYPE "public"."order_status_enum" RENAME TO "order_status_enum2";

# 2.创建同名枚举类型
CREATE TYPE order_status_enum AS ENUM ('START');

# 3.修改拥有者
ALTER TYPE "public"."order_status_enum" OWNER TO "postgres";

# 4.如果字段有设置默认值。要先删除掉,请先备份好数据
ALTER TABLE "order" ALTER COLUMN status DROP DEFAULT;

# 5.修改字段的枚举类型
ALTER TABLE "public"."order" ALTER COLUMN "status" TYPE "order_status_enum" USING "status"::text::order_status_enum;

# 6.重新设置默认值(如果有需要)
ALTER TABLE "order" ALTER COLUMN status SET DEFAULT 'START';

# 7.删掉旧的枚举类型
DROP TYPE "public"."order_status_enum2";


http://www.niftyadmin.cn/n/5340474.html

相关文章

L1-078 吉老师的回归(Java)

曾经在天梯赛大杀四方的吉老师决定回归天梯赛赛场啦! 为了简化题目,我们不妨假设天梯赛的每道题目可以用一个不超过 500 的、只包括可打印符号的字符串描述出来,如:Problem A: Print "Hello world!"。 众所周知&#…

Java将JSONArray转为List<HashMap>

大家好&#xff01;今天给大家分享的知识是在Java中如何将JSONArray转为List<HashMap> 一、转换 最近在开发过程中遇到了一个问题&#xff0c;就是如何将JSONArray类型转为List<HashMap>&#xff0c;于是我找到了解决办法&#xff0c;话不多说&#xff0c;直接上代…

解决执行npm(或pnpm)时报:证书过期 certificate has expired问题

项目执行 pnpm install 初始化时报 reason: certificate has expired 错误。 解决方案 1、取消ssl验证&#xff1a;npm config set strict-ssl false这个方法一般就可以解决了。2、更换npm镜像源&#xff1a;npm config set registry http://registry.cnpmjs.org npm config …

Ubuntu20 服务器版磁盘扩容

Ubuntu20 服务器版磁盘扩容 Ubuntu20 服务器版磁盘不够用进可以使用fdisk命令对磁盘进行扩容 本案例中是基于vmware虚拟化环境下&#xff0c;ubuntu服务器按默认磁盘大小16G进行安装后&#xff0c;运行一段时间后发面/分区磁盘空间全部用完&#xff0c;导致服务无法正常运行。基…

洛谷P1319 压缩技术(C语言)

这样一道入门题目&#xff0c;本来可以用for循环直接操作&#xff0c;但作者异想天开(xian de dan teng)地把所有数据登记在一个数组里面&#xff0c;然后再统一按格式输出。也就是定义一个数组Map&#xff0c;大小为n成n&#xff0c;然后按照输入数据&#xff0c;把Map中每一个…

【GitHub项目推荐--正则表达式】【转载】

当有项目需求用到正则表达式&#xff0c;你会怎么做&#xff1f;打开百度直接搜索「手机号正则表达式」&#xff0c;复制到 IDE 运行一下看一看符不符合自己的期望&#xff1f; 是不是常常因为找不到合适的表达式&#xff0c;深恶痛绝。 今天推荐一个开源项目&#xff0c;叫做…

yolov8 opencv dnn部署 github代码

源码地址 本人使用的opencv c github代码,代码作者非本人 实现推理源码中作者的yolov8s.onnx 推理条件 windows 10 Visual Studio 2019 Nvidia GeForce GTX 1070 opencv4.7.0 (opencv4.5.5在别的地方看到不支持yolov8的推理&#xff0c;所以只使用opencv4.7.0) c部署 环境…

【Linux】常见指令(一)

前言: Linux有许多的指令&#xff0c;通过学习这些指令&#xff0c;可以对目录及文件进行操作。 文章目录 一、基础指令1. ls—列出目录内容2. pwd—显示当前目录3. cd—切换目录重新认识指令4. touch—创建文件等5. mkdir—创建目录6. rmdir指令 && rm 指令7. man—显…