postgresql数据库表ID自增的实现代码

 更新时间:2023年12月28日 11:47:54   作者:luffy5459  
postgresql数据库可以创建主键,但是没有像mysql那样直接指定主键自增的auto_increment关键字,因此如果在postgresql中创建表指定主键自增使用auto_increment会报错,本文通过一个实例给大家演示自增ID的实现,需要的朋友可以参考下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

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自增的资料请关注程序员之家其它相关文章!

相关文章

  • PostgreSQL连接数过多报错:too many clients already的解决办法

    PostgreSQL连接数过多报错:too many clients already的解决

    在使用 Navicat 连接 PostgreSQL 数据库时,突然遭遇到了一个报错:“FATAL: sorry, too many clients already”,这一错误提示表明数据库连接数已经达到上限,无法再创建新连接,所以本文给大家介绍了相关的解决办法,需要的朋友可以参考下
    2024-03-03
  • Abp.NHibernate连接PostgreSQl数据库的方法

    Abp.NHibernate连接PostgreSQl数据库的方法

    这篇文章主要为大家详细介绍了Abp.NHibernate连接PostgreSQl数据库的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • PostgreSQL 自定义自动类型转换操作(CAST)

    PostgreSQL 自定义自动类型转换操作(CAST)

    这篇文章主要介绍了PostgreSQL 自定义自动类型转换操作(CAST),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • PostgreSQL行转列的多种方法

    PostgreSQL行转列的多种方法

    这篇文章主要介绍了PostgreSQL行转列的多种方法,本文给大家分享三种方法,每种方法结合示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-10-10
  • postgresql如何兼容MySQL if函数

    postgresql如何兼容MySQL if函数

    这篇文章主要介绍了postgresql如何兼容MySQL if函数问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Postgresql 如何选择正确的关闭模式

    Postgresql 如何选择正确的关闭模式

    这篇文章主要介绍了Postgresl 如何选择正确的关闭模式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • PotgreSQL?基于时间点恢复过程

    PotgreSQL?基于时间点恢复过程

    本篇文章介绍?PostgreSQL?基于时间点恢复(point-in-time-recover)需要的条件及恢复过程,属于操作说明,对PotgreSQL?时间点恢复相关知识感兴趣的朋友跟随小编一起看看吧
    2023-08-08
  • 浅谈PostgreSQL中大小写不敏感问题

    浅谈PostgreSQL中大小写不敏感问题

    这篇文章主要介绍了浅谈PostgreSQL中大小写不敏感问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • 如何使用Dockerfile创建PostgreSQL数据库

    如何使用Dockerfile创建PostgreSQL数据库

    这篇文章主要介绍了如何使用Dockerfile创建PostgreSQL数据库,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-02-02
  • PostgreSQL与MySQL优劣势比较浅谈

    PostgreSQL与MySQL优劣势比较浅谈

    这篇文章主要详细介绍了PostgreSQL与MySQL有哪些优劣势,文中介绍的非常详细,对于学习有一定的帮助,感兴趣的小伙伴可以参考一下
    2023-04-04

最新评论

?


http://www.vxiaotou.com