假設我們有一個名為“mytable”的表:
| 名稱 [varchar] | 飲食習慣 [int] |
|---|---|
| 安娜 | 1 |
| 羅蘭 | 3 |
| 賽普 | 1 |
| 卡特琳 | 2 |
| 盧卡斯 | 4 |
| 海德薇 | 3 |
現在我意識到我想將列素食改為具體。我創建自己的列舉型別:
CREATE TYPE diet AS ENUM ('vegetarian', 'vegan', 'omni');
我想要的是將“飲食習慣”列的型別更改為“飲食”。為此,我還想在這樣的型別之間進行映射
1 --> 'vegan'
2 --> 'vegetarian'
rest --> 'omni'
我該怎么辦?我知道可以像這樣使用 USING 子句:
ALTER TABLE mytable
ALTER COLUMN eating_habits TYPE diet
USING (
<Expression>
)
但我不知道“表達”應該是什么,網上的絕大多數例子都是微不足道的。
uj5u.com熱心網友回復:
你需要一個 CASE 運算式:
ALTER TABLE mytable
ALTER COLUMN eating_habits TYPE diet
USING (
case eating_habits
when 1 then 'vegan'::diet
when 2 then 'vegetarian'::diet
else 'omni'::diet
end
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/437315.html
標籤:PostgreSQL 使用 更改表
上一篇:如果存在執行,我如何使用?
