删除一些以前的数据后,如何重新启动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”)
谢谢,请提出是否需要更正。
- 在postgresql …查询中加入两个单独的查询…(可能或不可能)
- ruby sequel gem – 如何使用pg_array扩展名查询数组
- 在Heroku,Cedar,与Unicorn:获取ActiveRecord :: StatementInvalid:PGError:SSL SYSCALL错误:检测到EOF
- 如何在没有seg faulting的情况下使用Ruby 1.8.7在OS X Lion上运行“gem install”?
- 正确的全文索引Rails / PostgreSQL / pg_search
- 在Heroku上托管的ROR中,在2个站点上显示一个具有不同前端但相同后端的应用程序
- 数组不会持久保存到数据库
- 一次通话中多个日期范围的总和?
- 更好的SQL – :group vs.:select =>’DISTINCT’