刪除值時的錯誤.png
場景
當(dāng)使用了postgresql的枚舉類型闷游,已經(jīng)有表使用了這個枚舉時塘砸。因為有強關(guān)聯(lián)是不能直接刪除或者更改枚舉項的扼倘。
解決方案
新建一個新的枚舉類型去替換原有的枚舉類型遇绞。
注意:如有線上項目注冊了枚舉類型CLR嗓奢,相關(guān)項目需要釋放數(shù)據(jù)庫資源(重啟服務(wù))
--1. 更改原枚舉名稱
ALTER TYPE "public"."et_type" RENAME TO "et_type2";
--2. 創(chuàng)建用于替換的枚舉
CREATE TYPE "public"."et_type" AS ENUM ('type1', 'type2', 'type3');
--3. 更改枚舉擁有者
ALTER TYPE "public"."et_type" OWNER TO "postgres";
--4. 更改表對枚舉的引用
ALTER TABLE "public"."table" ALTER COLUMN "type" TYPE "et_type" USING "type"::text::et_type;
--5. 手動刪除更改名字后的枚舉
DROP TYPE "public"."et_type2";