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