【发布时间】:2011-11-28 05:09:36
【问题描述】:
我在 Rails 2.3.8 上使用 PostgreSQL 数据库,我需要在我的表上重新启动自动增量 ID。我该怎么做?
【问题讨论】:
标签: ruby-on-rails database postgresql
我在 Rails 2.3.8 上使用 PostgreSQL 数据库,我需要在我的表上重新启动自动增量 ID。我该怎么做?
【问题讨论】:
标签: ruby-on-rails database postgresql
如果您截断表,您可以在末尾使用 RESTART IDENTITY 子句。
例子:
TRUNCATE TABLE foo RESTART IDENTITY;
【讨论】:
你可以通过以下方式做到这一点:
ActiveRecord::Base.connection.execute("TRUNCATE TABLE your_table_name RESTART IDENTITY")
【讨论】:
您可以直接在 PostgreSQL 中使用“alter sequence”进行操作:http://www.postgresql.org/docs/current/static/sql-altersequence.html
特别是“重启”
我不知道你会如何通过 Rails 抽象来做到这一点。
【讨论】:
试试:
ActiveRecord::Base.connection.reset_pk_sequence!(table_name)
并查看此答案以获取更多详细信息: https://stackoverflow.com/a/7814519/1392282
【讨论】:
查看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
【讨论】:
如果您想从表中删除所有数据并想重置 id,请尝试以下代码。
ActiveRecord::Base.connection.execute("TRUNCATE TABLE your_table_name 重新启动身份")
但是,如果表格存在某种关系,并且您想从表格中删除所有数据以及相关表格数据,请尝试以下代码。
ActiveRecord::Base.connection.execute("TRUNCATE TABLE your_table_name 重新启动身份级联")
感谢和 如果需要更正,请提出建议。
【讨论】:
您可以在 Rails 中使用 ActiveRecord。
您可以通过运行以下命令从 Rails 控制台轻松完成此操作:
Table_name.reset_primary_key
你也可以使用SQL:
TRUNCATE TABLE foo RESTART IDENTITY;
【讨论】: