猿问

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

在Postgres 9.3表中,我有一个integer主键,具有自动递增的顺序,但是我已经达到的最大值integer。怎么把它转换integer成serial?

我试过了:


ALTER TABLE my_table ALTER COLUMN id SET DATA TYPE bigint;

但是对于数据类型serial而不是则无效bigint。好像我无法转换为serial?


qq_遁去的一_1
浏览 405回答 1
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。
随时随地看视频慕课网APP
我要回答