PostgreSQL中修改列数据类型报错,求正确操作方法
正确修改列数据类型或添加唯一约束的语法
你执行报错的原因很明确:UNIQUE是唯一约束,不是数据类型,所以TYPE关键字后面跟它会触发语法错误。
分两种场景给你正确的操作方式:
1. 确实需要修改列的数据类型
语法格式为:
ALTER TABLE 表名 ALTER COLUMN 列名 TYPE 目标数据类型;
比如你想把body_type列改成长度为50的字符串类型,就执行:
ALTER TABLE galaxy ALTER COLUMN body_type TYPE varchar(50);
注意:如果列中已有数据,新的数据类型必须能兼容现有数据,否则会执行失败。
2. 实际是想给列添加唯一约束
如果你的需求是让body_type列的值唯一,而不是修改数据类型,要用添加约束的语法,有两种写法:
- 手动指定约束名(推荐,方便后续维护):
ALTER TABLE galaxy ADD CONSTRAINT galaxy_body_type_unique UNIQUE (body_type);
- 不指定约束名,由系统自动生成:
ALTER TABLE galaxy ADD UNIQUE (body_type);
内容的提问来源于stack exchange,提问作者A. S.
相关产品推荐
相关产品推荐

