2011-06-12 174 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,则无需重写表格即可完成此操作。