更改 postgresql 中的列大小
Changing the column size in postgresql
我目前在 postgresql 中有一个名为 companies
的 table。
companies
有一个长度为 30
的列 name
,但现在我想将列的长度减少到 20
个字符,但不幸的是我在该列中有一些条目长度可达 25-30。谁能建议我如何在不丢失任何数据条目的情况下减小列的大小?
这是我目前尝试过的方法:
alter table companies alter COLUMN name type varchar(20);
但我明白了:
ERROR: value too long for type character varying(20)
您不能在不缩短现有记录的情况下减小列的大小。
如果您只想防止在长度超过 20 的地方创建新记录,这可以通过验证长度并拒绝太长记录的触发器来实现。
您可以剪切超过 20 个字符的名称:
update companies
set name = substr(name, 1, 20)
where length(name) > 20
alter table companies alter column name type varchar(20);
我目前在 postgresql 中有一个名为 companies
的 table。
companies
有一个长度为 30
的列 name
,但现在我想将列的长度减少到 20
个字符,但不幸的是我在该列中有一些条目长度可达 25-30。谁能建议我如何在不丢失任何数据条目的情况下减小列的大小?
这是我目前尝试过的方法:
alter table companies alter COLUMN name type varchar(20);
但我明白了:
ERROR: value too long for type character varying(20)
您不能在不缩短现有记录的情况下减小列的大小。
如果您只想防止在长度超过 20 的地方创建新记录,这可以通过验证长度并拒绝太长记录的触发器来实现。
您可以剪切超过 20 个字符的名称:
update companies
set name = substr(name, 1, 20)
where length(name) > 20
alter table companies alter column name type varchar(20);