如何通过rails迁移设置Postgres中主键(ID)列的起始点

我正在将一个rails应用程序部署到heroku,后者使用PostgreSQL作为后端。 在我的数据库迁移中,我通常会将报告等内容的ID字段设置为至少1000,大多数客户似乎不喜欢从1开始。

通常我使用mysql,我只是在创建表后添加一个特定的sql:

def self.up create_table :reports do |t| t.references :something ... end execute("ALTER TABLE reports AUTO_INCREMENT = 1000;") end 

有没有人知道如何为PostgreSQL实现同样的目标,理想情况下我希望迁移来构建表本身,这样就不是特定于DB的。

我想实现我的目标的一个愚蠢的方法是在循环中创建和删除999条记录,哎哟。

不知道ruby和铁路部分,但查询你所说的是

 ALTER SEQUENCE reports_something_seq RESTART 1000; 

您将需要查找表格中的序列名称和postgresql文档以获取有关此事项的一般教育;-)

在postgres中,与许多其他数据库一样,自动增量function通过Sequences完成。 对于每个Serial和喜欢的字段,Postres会自动为您创建序列,并命名为TABLENAME _ COLUMNNAME _ seq。

所以,你必须改变相应的序列,如下所示:

 ALTER SEQUENCE example_id_seq RESTART 1000 -- corrected from START