删除一些以前的数据后,如何重新启动PostgreSQL中的表的id计数?

我在Rails 2.3.8上使用PostgreSQL数据库,我需要在我的表上重启自动增量ID。 我怎样才能做到这一点?

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

特别是“重启”

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

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

例:

TRUNCATE TABLE foo RESTART IDENTITY;

TRUNCATE DOCUMENTATION

您可以通过以下方式执行此操作:

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

查看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 

尝试:

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

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

您还可以在Rails中使用ActiveRecord。

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

 Table_name.reset_primary_key 

如果你想删除表中的所有数据并想要重置id,那么尝试下面的代码。

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

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

ActiveRecord :: Base.connection.execute(“TRUNCATE TABLE your_table_name RESTART IDENTITY CASCADE”)

谢谢,请提出是否需要更正。