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

1.说明

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

2.创建枚举类型

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

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.增加和修改枚举值

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

ALTER TYPE order_status_enum ADD VALUE 'END';

4.修改枚举值

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

ALTER TYPE order_status_enum RENAME VALUE 'END' TO 'FINISH';

5.删除枚举值

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

# 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";

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰冷的希望

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值