0

我有一个 varchar(35) 的域类型,想将长度增加到 40。

我可以创建一个新域,然后只做 ALTER TABLE table ALTER COLUMN column TYPE new_domain;

但是,我必须对所有使用该域的表执行此操作。无论如何使用 ALTER DOMAIN 语法来增加长度/更改数据类型?

4

1 回答 1

4

更好的设计是让数据类型text的列允许无限长度的文本。如果您确实需要强制执行最大长度,请添加CHECK如下约束:

ALTER TABLE tbl ADD CONSTRAINT tbl_col_len CHECK (length(col) < 41);

您可以自由更改检查约束,而不必弄乱列或其数据类型。

域也是如此。如果您对带有检查约束的域实施长度限制,则可以自由更改它(当然,使用该域的所有列都必须符合新标准。据我所知,您不能轻易更改基础数据类型。


使用像您这样的现有设置,您还可以转储数据库,使用全局搜索和替换来破解转储以交换域的所有出现(只要使用域的所有字段都满足条件)并重新加载转储。

于 2012-02-18T03:05:24.030 回答