【发布时间】:2018-11-11 23:37:39
【问题描述】:
我有一个 Postgres 项目,其中我的一个模型是 Client 简单地按其主键索引。我在创建客户端时遇到了问题,因为有人在创建客户端的同时明确设置了我读过的主键并不会影响 Postgres 的客户端序列表,它负责在任何时候自动递增主键 1创建一个客户端对象。
我运行了一些 SQL 查询来玩弄它,发现当前的序列值实际上比数据库中客户端的最高 ID 263 低 1,即 262,所以它说的是 ID 为 263 的客户端已经存在。我尝试在我们的前端应用程序中创建一个客户端,再次遇到错误,并决定重新运行查询。我看到数据库中没有像预期的那样创建新的客户端,但我也注意到序列值确实上升到了 263,所以当我再次尝试创建客户端时它成功了!
即使创建相关模型失败,PostgreSQL 序列表也会增加这种正常行为吗?如果是这样,这似乎会导致一些严重的问题。
【问题讨论】:
标签: postgresql sequence