我有一个 varchar(35) 的域类型,想将长度增加到 40。
我可以创建一个新域,然后只做 ALTER TABLE table ALTER COLUMN column TYPE new_domain;
但是,我必须对所有使用该域的表执行此操作。无论如何使用 ALTER DOMAIN 语法来增加长度/更改数据类型?
我有一个 varchar(35) 的域类型,想将长度增加到 40。
我可以创建一个新域,然后只做 ALTER TABLE table ALTER COLUMN column TYPE new_domain;
但是,我必须对所有使用该域的表执行此操作。无论如何使用 ALTER DOMAIN 语法来增加长度/更改数据类型?
更好的设计是让数据类型text
的列允许无限长度的文本。如果您确实需要强制执行最大长度,请添加CHECK
如下约束:
ALTER TABLE tbl ADD CONSTRAINT tbl_col_len CHECK (length(col) < 41);
您可以自由更改检查约束,而不必弄乱列或其数据类型。
域也是如此。如果您对带有检查约束的域实施长度限制,则可以自由更改它(当然,使用该域的所有列都必须符合新标准。据我所知,您不能轻易更改基础数据类型。
使用像您这样的现有设置,您还可以转储数据库,使用全局搜索和替换来破解转储以交换域的所有出现(只要使用域的所有字段都满足条件)并重新加载转储。