PostgreSQL中为字段设置PRIMARY KEY属性报语法错误如何解决?
PostgreSQL语法报错原因分析
- 首先,PostgreSQL的
ALTER TABLE语法中,ALTER COLUMN子句仅支持修改列的数据类型、默认值、非空属性等单列基础属性,不支持直接在ALTER COLUMN后追加PRIMARY KEY定义。主键属于表级约束,需要通过独立的ADD CONSTRAINT子句声明。 - 其次,你在同一条
ALTER TABLE中执行修改列类型、设置约束、修改表所有者多个操作时,不同操作之间需要用逗号分隔,你当前的写法也没有符合多操作拼接的语法规则。
正确的修改语句
如果需要一次性完成「修改id列类型为INTEGER、设置id为主键、修改表所有者为postgres」三个需求,正确写法如下:
ALTER TABLE IF EXISTS public.post ALTER COLUMN id TYPE INTEGER, ADD CONSTRAINT post_pkey PRIMARY KEY (id), OWNER TO postgres;
注意:执行前需要确认
id列不存在空值和重复值,否则主键约束会创建失败;如果表之前已经存在主键约束,需要先删除原有主键约束再执行上述语句,避免约束重名报错。
内容的提问来源于stack exchange,提问作者King Of Chads
相关产品推荐
相关产品推荐

