未分類

當 PostgreSQL 對 MySQL 做連接的時候遇到 ENUM

1.MySQL 中取得 my_enum _type_t 的定義
SHOW CREATE TABLE my_enum;
2.在 PostgreSQL 中建立一個對應的類型:
CREATE TYPE my_enum AS ENUM ('value1', 'value2', 'value3');
3.建立完類型後,再次導入
IMPORT FOREIGN SCHEMA "schema_name"
LIMIT TO (my_enum)
FROM SERVER store_center
INTO public;

這個做法的問題會需要手動維護,假如要新增就用以下的方式

ALTER TYPE my_enum ADD VALUE 'new_value';

是要刪除了話就要整個類型都刪除

-- 創建新的 ENUM 類型
CREATE TYPE new_my_enum AS ENUM ('value1', 'value3');

-- 更新使用該類型的表
ALTER TABLE my_table 
ALTER COLUMN enum_column TYPE new_my_enum USING 
  CASE 
    WHEN enum_column::text = 'value2' THEN NULL 
    ELSE enum_column::text::new_my_enum 
  END;

-- 刪除舊的 ENUM 類型
DROP TYPE my_enum;

-- 重命名新的 ENUM 類型
ALTER TYPE new_my_enum RENAME TO my_enum;