为了账号安全,请及时绑定邮箱和手机立即绑定

如何将主键从整数转换为串行?

如何将主键从整数转换为串行?

qq_遁去的一_1 2019-11-21 09:32:13
在Postgres 9.3表中,我有一个integer主键,具有自动递增的顺序,但是我已经达到的最大值integer。怎么把它转换integer成serial?我试过了:ALTER TABLE my_table ALTER COLUMN id SET DATA TYPE bigint;但是对于数据类型serial而不是则无效bigint。好像我无法转换为serial?
查看完整描述

1 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

serial是伪数据类型,而不是实际数据类型。它的integer下面是一些自动执行的其他DDL命令:


创建一个序列(默认情况下具有匹配名称)。

设置列NOT NULL和默认值以从该序列中绘制。

使列“拥有”序列。

细节:


安全,干净地重命名使用Postgres中的串行主键列的表?

A bigserial相同,围绕一bigint列构建。您想要bigint,但您已经实现了。要将现有的serial列转换为bigserial(或smallserial),您要做的就是ALTER列的数据类型。序列通常基于bigint,因此相同的序列可用于任何integer类型。


要将a更改bigint为bigserial或将integera 更改为serial,您只需手动完成其余工作即可:


为字段创建PostgreSQL序列(不是记录的ID)

实际的数据类型仍然是integer/ bigint。如果满足a的所有条件,则诸如pgAdmin之类的某些客户端将serial在反向工程CREATE TABLE脚本中显示数据类型serial。


查看完整回答
反对 回复 2019-11-21
  • 1 回答
  • 0 关注
  • 404 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信