在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。
- 1 回答
- 0 关注
- 404 浏览
添加回答
举报
0/150
提交
取消