业务中需要调整id字段类型,最开始设置的为SERIAL,后续需要调整至SERIAL8。
1 | alter table tab_name alter column data_id type SERIAL8; |
但实际上 create table 语句中的字段类型 SERIAL8,并不存在。 SERIAL8 (或者SERIAL)会创建对应的sequence, 然后将sequence 跟表的主键关联。具体对应过程为:
1 | create table table_name (dataId bigint not null primary key); |
理解了这个过程,就容易明白了,直接修改字段类型 SERIAL8 是不可以的,需要按照上述过程操作:
1 | -- 先把字段类型调整为 int8, 这一步操作耗时较长,在8核心+SSD固态盘的主机上,2亿条数据耗时超过一刻钟 |
1 | Sequence "public.bw_data_dataid_seq8" |