postgreSQL自动递增主键创方法

作者:袖梨 2022-06-29

自动递增在postresql中只要把字段类型设置为serial就可以了。

比如

 代码如下 复制代码

CREATE TABLE st_cat
(
id serial NOT NULL,
parentid integer, — 父id
catname character varying(20), — 分类名称
memo character varying(500), — 备注
issub integer — 是否有子分类
)
WITH (
OIDS=FALSE
);
ALTER TABLE st_cat
OWNER TO postgres;
COMMENT ON COLUMN st_cat.parentid IS ‘父id’;
COMMENT ON COLUMN st_cat.catname IS ‘分类名称’;
COMMENT ON COLUMN st_cat.memo IS ‘备注’;
COMMENT ON COLUMN st_cat.issub IS ‘是否有子分类’;


在网上看到类似的代码,就奇怪

 代码如下 复制代码

nextval('test_a_id_seq'::regclass)

这个是从哪里来的,

后来在pgAdmin里面找到了,是在相应的表的字段,会出现

 代码如下 复制代码

ALTER TABLE test_a ADD COLUMN id integer;
ALTER TABLE test_a ALTER COLUMN id SET NOT NULL;
ALTER TABLE test_a ALTER COLUMN id SET DEFAULT nextval('test_a_id_seq'::regclass);

使用最后的那个就好了。

这样就可以随心所欲的插入数据了。

Java代码里面,sqlSession.commit();操作是不可少的,要不然看不到结果。

你还可以用每行的 oid 字段作为一个唯一值。不过,如果你需要倾倒和重载数据库,你需要使用 pg_dump 的 -o 选项或者 COPY WITH OIDS 选项以保留 OID。

 代码如下 复制代码

insert into person values(nextval('person_id_req'),'yourname');

相关文章

精彩推荐