You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL将bigserial主键列转为UUID列报错,正确语法是什么

PostgreSQL修改bigserial类型主键为UUID的正确操作

报错原因

你执行的两条语句出现语法错误,是因为修改字段类型必须指定TYPE关键字,你漏掉了该关键字导致SQL解析失败。

前置准备

首先需要确保已启用uuid-ossp扩展,否则uuid_generate_v4()函数无法使用:

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

完整操作步骤

  • 第一步:查询并删除原有的主键约束(bigserial类型的id默认会绑定主键约束,直接修改类型会失败)
    先查询主键约束名,默认通常为people_pkey:
    SELECT conname FROM pg_constraint WHERE conrelid = 'people'::regclass AND contype = 'p';
    
    执行删除操作:
    ALTER TABLE people DROP CONSTRAINT people_pkey;
    
  • 第二步:修改id列类型为UUID,同时为已存在的行生成UUID值
    ALTER TABLE people ALTER COLUMN id TYPE UUID USING (uuid_generate_v4());
    
  • 第三步:重新将id列设置为主键
    ALTER TABLE people ADD PRIMARY KEY (id);
    

注意事项

如果该id字段有被其他表的外键关联,需要先删除所有关联的外键约束,待类型修改完成后再重新建立外键关联。

内容的提问来源于stack exchange,提问作者user16767975

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 13:39:03