加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

也谈如何获得PostgreSQL序列的当前值(最后值)

发布时间:2020-12-13 17:29:45 所属栏目:百科 来源:网络整理
导读:【原创文章,转载须注明出处】 由于前段时间一台Linux服务器(在VM笼子里),莫名其妙被一台AD撑破空间弄死了,再也救不会来(可见VM也不安全),可幸的是刚给这台Linux做了一台在线备用服务器,于是赶紧切换IP,把复制支点抹掉等等,然后用备用服务器设置Li

【原创文章,转载须注明出处】

由于前段时间一台Linux服务器(在VM笼子里),莫名其妙被一台AD撑破空间弄死了,再也救不会来(可见VM也不安全),可幸的是刚给这台Linux做了一台在线备用服务器,于是赶紧切换IP,把复制支点抹掉等等,然后用备用服务器设置Live。

本以为一切没问题,但后来用户某些系统部分功能报错,一查才发现备用服务器上PostgreSQL的序列没有被同步过来(我现在用的是slony做的同步),然后各自手动设置一番就不说了。

后来细想,有必要把这些序列的最新值也同步过来,slony没有此功能唯有自己写shellscript实现,但如何获得Live服务器上序列的最新值呢?度娘了一番,无非都是用currval('seq_name')这样的函数获得,但是,新开一个session用currval会报错的,当前大家提供的折中办法是先用nextval再用currval,不甘心,再谷歌一番也是这样的说法。

于是拿起计算机敲了一下,如果我要1分钟同步一次,一天要损失1.4K 个序列,一年要损失525K个序列,这是非常不可取的!

但通过各种尝试,居然找个一个办法轻松获得,各位看官请看:

假如我要知道seq_mail_id这个序列的最后值,那么只需要:

select * from seq_mail_id ;

结果表中last_value这个值就是你想要的,easy吧?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读