【问题标题】:Why postgres doesn't autoincrement the index?为什么 postgres 不自动增加索引?
【发布时间】:2016-05-09 18:45:08
【问题描述】:

我创建了一个具有 id(序列)字段的表 A。 我创建了一个种子 sql 文件,我在其中明确指定了 id 值,因为我还必须填充具有引用此 id 字段的外键的相关表。

所有的种子 sql 脚本运行良好。 但是,当在我的表 A 中执行新插入时(没有指定 id、序列,因为我希望它自动递增),我得到了一个重复的键错误。在第一个播种脚本之后看起来像这样。 Postgres 不会自动增加索引。

事实上,如果我在播种阶段插入了 3 条记录,我会从后面的 id 为 NULL 的插入中返回三倍的错误,然后它开始按预期插入所有内容。 IE。即使它报告重复键错误,它也会增加每个发送的查询的自动增量值。

您通常如何处理这个问题? 谢谢

【问题讨论】:

标签: php postgresql auto-increment


【解决方案1】:

您正面临这个问题,因为“您的表序列 id 的当前值不同”。您可以在数据库中更改它。

如果您使用的是 pgadmin,请转到您的 schema > 序列 > yourtablename_id_seq > 更改当前值。

【讨论】:

  • 在播种过程之后是否可以通过查询进行设置?在 Mysql 中可以设置自动增量。 postgres中没有等价物?运行我的播种脚本后,如果数据库已为应用程序做好准备,那就太好了,而不是我需要记住去那里并增加我填充的每个表上的每个自动增量......
  • 使用 max() 函数检查你的表的最大 id 并设置你的 tablename_id_seq > 当前值加 1 和你的最大 id,那么你就不会遇到这个重复的 id 问题
猜你喜欢
  • 1970-01-01
  • 2014-02-06
  • 2015-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多