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.修改枚举值
如果你对某个枚举值不满意,可以直接修改它文章来源:https://www.toymoban.com/news/detail-817560.html
ALTER TYPE order_status_enum RENAME VALUE 'END' TO 'FINISH';
5.删除枚举值
如果想要删掉某个枚举值,操作方法是,重新定义一个枚举类型替换掉原有的枚举类型,比如说我这里有一个order表,它的status字段是名为order_status_enum的枚举类型文章来源地址https://www.toymoban.com/news/detail-817560.html
# 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";
到了这里,关于【PostgreSQL】创建枚举类型和修改枚举值的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!