postgresql数据库自增ID
关注
已关注
0
1
0
352
发表于 2020-05-27 10:03:10
## postgresql 趟坑记录——建表自增
最近项目又用到了postgresql数据库,在新建表的时候发现不知道怎么id自增,网上查了资料之后发现一直在报错……
接入正题
先上个首先查到的用法
方法一:
```
create table test_a (
id serial,
name character varying(128),
constraint pk_test_a_id primary key( id)
);
```
方法二:
```
create table test_b(
id serial PRIMARY KEY,
name character varying(128)
);
```
方法三:
```
create table test_c (
id integer PRIMARY KEY,
name character varying(128)
);
再手动创建序列
CREATE SEQUENCE test_c_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
将序列赋值给主键
alter table test_c alter column id set default nextval('test_c_id_seq');
```
---
当你看完之后是什么想法?打死小编?没错,我也是这么想的,还是上我觉得直接好用的方法好了……
方法一:
```
CREATE TABLE "public"."表名" (
"id" int4 NOT NULL DEFAULT nextval('表名'::regclass),
。
。
。
CONSTRAINT "表名" PRIMARY KEY ("id")
)
```
然而,假如你使用了我的方法,程序却一直在报错?!
没错,因为上面的语句就是我当时犯的错……开始填坑
```
CREATE TABLE "public"."表名" (
"id" int4 NOT NULL DEFAULT nextval('"表名"'::regclass),
。
。
。
CONSTRAINT "表名" PRIMARY KEY ("id")
)
```
bug就在第二行语句的表名没有加双引号""!
假如你觉得上面的方法还是看不懂……,那么下面的语句就是你在寻找的
```
CREATE TABLE "public"."表名" (
"id" SERIAL PRIMARY KEY,
。
。
。
)
```
SERIAL 就是自增的方法名
重点在表名一定要加""号,要不postgresql不认……
好了,如果小编没有被打死,那我还会回来的
点击查看更多