2011-06-12 91 views
1

是否有反正更改域類型並將類型更改爲新類型?我有一列使用具有VARCHAR(25)類型的域,並希望將長度增加到150.更改域名更改類型

+2

您可以在http://DBA.stackexchange.com上提出此問題。 – Jonas 2011-06-12 20:49:33

回答

1

創建新域,更改所有表並刪除舊域。

1

一種方法是

  1. 數據庫脫機,
  2. 轉儲模式爲文本,
  3. 編輯文本,更改域的類型 爲varchar(150),
  4. 然後最後從 文本重新加載模式。

這只是一個草圖。在您對真實數據庫進行嘗試之前,先在沙箱中練習。

1

這是不可能的,但你可以讓它成爲可能。

由於事情的原因,你是別名varchar(25)作爲你的域名。

varchar(25),varchar(50),varchar和text在Postgres中的存儲方式都是一樣的。唯一的區別是長度檢查,這增加了前兩個開銷。

現在,你不能改變一個域的類型,但你可以改變它的約束 - 更好的做法是把約束放在域上是允許在不需要表重寫的情況下改變它們的那些「技巧」之一。

  1. 創建一個新的領域,說SHORT_STRING,這是一個別名爲VARCHAR與檢查約束
  2. 改變適用表列並設置其類型爲這個新的領域

這樣,如果您有第二個想法並決定將最大長度更改爲40或60,或者將其更改爲25,則無需重寫表格即可完成此操作。