postgresql数据库表ID自增的实现代码
postgresql数据库可以创建主键,但是没有像mysql那样直接指定主键自增的auto_increment关键字,因此如果在postgresql中创建表指定主键自增使用auto_increment会报错。那么如何实现主键自增,postgresql通过序列来实现。序列可以实现自动增长,而且表字段可以指定默认值,因此可以通过指定默认值的方式来实现主键自增。
postgresql提供了三种serial类型:smallserial,serial,bigserial,他不是真正的类型,而是在创建唯一标识符列的标志以方便使用。bigserial会创建一个bigint类型的自增,serial用以创建一个int类型的自增,依次类推。
下面通过实例演示自增ID的实现:
通过建表语句,可以看到,因为使用了serial类型,所以会创建一个关联的sequece,名为aaa_id_seq。
接着查看表结构,并向表中插入数据:
表aaa实现了id自增功能,表的id默认值是nextval('aaa_id_seq'::regclass)。
按照这个思路,我们可以这么来干,一般的主键表,没有使用serial类型,那么我们可以通过创建序列,并修改表ID默认值字段,指定默认值字段为序列的nextval。
我们创建一个普通的int类型ID,并设置为主键。建表不会出现创建序列的notice内容。
这个表的插入,如果不指定id,那么就会出现错误:
接着我们创建一个序列:
create sequence bbb_id_seq start with 1 increment by 1 no minvalue no maxvalue cache 1;
设置表bbb的ID字段的默认值为nextval(bbb_id_seq)
alter table bbb alter column id set default nextval('bbb_id_seq');
再次向bbb中插入记录,这次不用关心ID字段了。
通过查看表结构,看看两种方式产生的表:
postgresql查找索引的方法也是和mysql不一样,postgresql查看索引的语法是:select * from pg_indexes where tablename='bbb';或者select * from pg_statio_all_indexes where relname='bbb';
可以看到,postgresql默认索引也是通过btree来创建的。
最后再补充一点内容,查看序列和查看表结构是一样的,都是使用\d来查看,比如\d aaa_id_seq。
以上就是postgresql数据库表ID自增的实现代码的详细内容,更多关于postgresql数据库表ID自增的资料请关注脚本之家其它相关文章!
相关文章
navicat连接postgresql、人大金仓等数据库报错解决办法
在使用Navicat操作数据库时,遇到数据报错是一个常见的问题,这类问题可能涉及多个方面,下面这篇文章主要给大家介绍了关于navicat连接postgresql、人大金仓等数据库报错的解决办法,需要的朋友可以参考下2024-08-08关于PostgreSQL截取某个字段中的部分内容进行排序的问题
这篇文章主要介绍了PostgreSQL截取某个字段中的部分内容进行排序,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2023-06-06
最新评论