从 postgresql 字段中删除自动增量

Posted

技术标签:

【中文标题】从 postgresql 字段中删除自动增量【英文标题】:Remove autoincrement from postgresql field 【发布时间】:2016-11-20 09:37:47 【问题描述】:

我在数据库中有一个现有表,来自其他几个人的 FK,SQL 如下:

CREATE TABLE forecastsource (
    source_id integer DEFAULT nextval(('public.forecastsource_source_id_seq'::text)::regclass) NOT NULL,
    source_name character varying NOT NULL
);

我想从 id 字段中删除自动增量,并将其移动为 int 字段(不会丢失表中的当前数据)。除了删除并重新创建表之外,我该怎么做?

【问题讨论】:

【参考方案1】:

去掉默认值即可:

ALTER TABLE forecastsource ALTER COLUMN source_id DROP DEFAULT;

你可能还想删除序列。

【讨论】:

如果序列被创建为 SERIAL 并且由于某种原因您仍然需要它,您应该 ALTER SEQUENCE forecastsource_source_id_seq OWNED BY NONE;

以上是关于从 postgresql 字段中删除自动增量的主要内容,如果未能解决你的问题,请参考以下文章

postgresql中的自定义自动增量字段(发票/订单号)

在 postgresql 中重置自动增量计数器

使用猫鼬生成自动增量字段?

PostgreSQL中的自动增量列?

dbwritetable 删除 mysql 中的自动增量字段

mySQL 数据库:重置自动增量字段