截断并重新启动一组表的标识

时间:2017-01-24 13:17:56

标签: ruby-on-rails postgresql rails-activerecord truncation

我的应用使用 private readonly DbContextOptions _options;
我需要从一组表(Postgresqltable1)中删除所有行,并使用rb文件中的一个命令重新启动table4

Postgresql documentation我发现TRUNCATE with RESTART IDENTITY可以完成以下工作:

id

根据Stackoverflow的How to restart id counting on a table in PostgreSQL after deleting some previous data?,我可以使用以下命令:

TRUNCATE table1, table2, table3, table4 RESTART IDENTITY;

因此,将两个文档放在一起,使用以下命令是否正确:

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

考虑到在API dock文档中,ActiveRecord::Base.connection.execute("TRUNCATE table1, table2, table3, table4 RESTART IDENTITY") 方法被报告为已弃用或已移动?

1 个答案:

答案 0 :(得分:1)

现在推荐的方法是使用ActiveRecord::Base.connection_pool.with_connection块。

ActiveRecord::Base.connection_pool.with_connection do |conn|
  conn.execute("TRUNCATE table1, table2, table3, table4 RESTART IDENTITY")
end