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

tsd*_*own 9 sql migration postgresql ruby-on-rails

我正在向使用PostgreSQL作为后端的heroku部署rails应用程序.在我的数据库迁移中,我通常会将报告等内容的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
Run Code Online (Sandbox Code Playgroud)

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

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

Mic*_*ker 16

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

ALTER SEQUENCE reports_something_seq RESTART 1000;
Run Code Online (Sandbox Code Playgroud)

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


Max*_*yko 8

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

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

ALTER SEQUENCE example_id_seq RESTART 1000 -- corrected from START
Run Code Online (Sandbox Code Playgroud)