目标:让postgres自动生成ID
CREATE TABLE user_privilege (
id bigint NOT NULL,
name character varying(255) NOT NULL,
version integer
);
CREATE TABLE
INSERT INTO user_privilege (name, version) values ('XYZ', 1);
ERROR: null value in column "id" violates not-null constraint
ALTER TABLE user_privilege ALTER COLUMN id SET DEFAULT nextval('user_privilege_id_seq'::regclass);
ERROR: relation "user_privilege_id_seq" does not exist
谢谢!
编辑:
我希望将我的id保持为bigint,因为所有其他表的id都为bigint。
答案 0 :(得分:3)
你需要use either SERIAL or BIGSERIAL,而不是BIGINT。
CREATE TABLE user_privilege (
id BIGSERIAL NOT NULL,
目前尚不清楚您的表是否具有PRIMARY KEY或UNIQUE约束。但它应该。
答案 1 :(得分:0)
您必须首先创建序列:
CREATE SEQUENCE user_privilege_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
以后可以使用它:
ALTER TABLE ONLY user_privilege ALTER COLUMN id SET DEFAULT nextval('user_privilege_id_seq'::regclass);
这是创建序列documentation