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