【问题标题】:How to restart id counting on a table in PostgreSQL after deleting some previous data?删除一些以前的数据后,如何在 PostgreSQL 中的表上重新开始 id 计数?
【发布时间】:2011-11-28 05:09:36
【问题描述】:

我在 Rails 2.3.8 上使用 PostgreSQL 数据库,我需要在我的表上重新启动自动增量 ID。我该怎么做?

【问题讨论】:

    标签: ruby-on-rails database postgresql


    【解决方案1】:

    如果您截断表,您可以在末尾使用 RESTART IDENTITY 子句。

    例子:

    TRUNCATE TABLE foo RESTART IDENTITY;

    TRUNCATE DOCUMENTATION

    【讨论】:

    • 请不要使用 URL 缩短器。这可以防止人们看到您链接到的位置。杰夫编辑了链接。 See here for more on the topic.
    • 谢谢 我不知道缩短的链接是一个诺诺。现在我受过教育。
    【解决方案2】:

    你可以通过以下方式做到这一点:

    ActiveRecord::Base.connection.execute("TRUNCATE TABLE your_table_name RESTART IDENTITY")

    【讨论】:

      【解决方案3】:

      您可以直接在 PostgreSQL 中使用“alter sequence”进行操作:http://www.postgresql.org/docs/current/static/sql-altersequence.html

      特别是“重启”

      我不知道你会如何通过 Rails 抽象来做到这一点。

      【讨论】:

        【解决方案4】:

        试试:

        ActiveRecord::Base.connection.reset_pk_sequence!(table_name)
        

        并查看此答案以获取更多详细信息: https://stackoverflow.com/a/7814519/1392282

        【讨论】:

          【解决方案5】:

          查看setval

          SELECT setval('foo', 42);           Next nextval will return 43
          SELECT setval('foo', 42, true);     Same as above
          SELECT setval('foo', 42, false);    Next nextval will return 42
          

          【讨论】:

            【解决方案6】:

            如果您想从表中删除所有数据并想重置 id,请尝试以下代码。

            ActiveRecord::Base.connection.execute("TRUNCATE TABLE your_table_name 重新启动身份")

            但是,如果表格存在某种关系,并且您想从表格中删除所有数据以及相关表格数据,请尝试以下代码。

            ActiveRecord::Base.connection.execute("TRUNCATE TABLE your_table_name 重新启动身份级联")

            感谢和 如果需要更正,请提出建议。

            【讨论】:

              【解决方案7】:

              您可以在 Rails 中使用 ActiveRecord。

              您可以通过运行以下命令从 Rails 控制台轻松完成此操作:

              Table_name.reset_primary_key
              

              你也可以使用SQL

              TRUNCATE TABLE foo RESTART IDENTITY;
              

              【讨论】:

              • 检查documentation,这只从基类重新获取或更新主键。它与数据库无关。
              猜你喜欢
              • 2021-11-21
              • 2021-11-22
              • 1970-01-01
              • 2014-08-25
              • 2020-08-17
              • 2016-12-26
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多