Postgres 序列对代码和 pgAdmin 的反应不同

Postgres Sequence reacting different to code and pgAdmin

我正在使用 Matlab-2017b 和 PosgreSQL(通过 ODBC 驱动程序)开发一个项目。 代码中有一些文件需要用数据库table对应的id号重命名。

在对序列的当前值为 1 的场景进行一些测试时,测试结果显示了这种奇怪的行为。

如果使用pgAdmin-4 Gui打开序列属性并在代码执行序列后将当前值设置为1 returns 2.

但是如果下面来自 MATLAB 的查询是 运行:

ALTER SEQUENCE seq RESTART WITH 1;

接着代码执行,新插入的元素id的列为1

虽然代码已经可以正常工作,但对于这背后发生的事情仍然有些好奇?

在第一种情况 (PgAdmin) 中,您已将 current 值设置为 1,因此下一个将要获取的值为 2。

在第二种情况下(restart 序列),您将 next 值设置为 1,因此下一个将要提取的将是 1。