为了在postgres中将整数数据类型转换为bigserial,我运行了以下命令,但它没有改变它的数据类型,但是它改变了修饰符
CREATE SEQUENCE id;
ALTER TABLE user_event_logs ALTER COLUMN id SET NOT NULL;
ALTER TABLE user_event_logs ALTER COLUMN id SET DEFAULT nextval('id');
ALTER SEQUENCE id OWNED BY user_event_logs.id;
运行此功能后,显示输出
Column Type Modifiers this all my column heading and id integer not null
我想将类型更改为bigserial
答案 0 :(得分:2)
bigserial是bigint + sequence +默认值的快捷方式,因此如果您希望Long
为user_event_logs.id
而不是bigint
,请使用:
int
https://www.postgresql.org/docs/current/static/datatype-numeric.html#DATATYPE-SERIAL
smallserial,serial和bigserial数据类型不是真正的类型, 但仅仅是创建唯一标识符的符号方便 列(类似于某些人支持的AUTO_INCREMENT属性 其他数据库)。
也:
类型名称serial和serial4是等效的:都创建整数 列。类型名bigserial和serial8的工作方式相同, 除了他们创建一个bigint列。
所以如果你想要ALTER TABLE user_event_logs ALTER COLUMN id type bigint;
,只需将volumn类型改为bigserial
答案 1 :(得分:0)
我不确定,你能尝试一下吗?
CREATE SEQUENCE id_seq;
ALTER TABLE user_event_logs ALTER COLUMN id TYPE BIGINT;
ALTER TABLE user_event_logs ALTER COLUMN id SET NOT NULL;
ALTER TABLE user_event_logs ALTER COLUMN id SET DEFAULT nextval('id_seq'::regclass);
ALTER SEQUENCE id_seq OWNED BY user_event_logs.id;