13

我希望我的 Order 模型的 ID 从 1000 开始,并从那里自动递增计数。

这可以通过迁移来完成吗?

4

3 回答 3

25

在您的迁移中,创建表后,使用以下内容更新序列:

create_table :products do |t|
  t.string  :name
  # other stuff
end

# for Postgres
execute "SELECT setval('products_id_seq', 1000)"

# and for mysql ...
execute "ALTER TABLE products AUTO_INCREMENT = 1000"
于 2012-08-22T16:09:20.240 回答
0

这尚未经过测试,我不确定您使用的是什么数据库。

create_table(:order, :id => false) do |t|
   t.integer :id, :options => 'PRIMARY KEY', :default => 1000

或者如果您已经有表,请尝试此迁移

def change
  execute "ALTER TABLE orders AUTO_INCREMENT = 1000"
end
于 2012-08-22T15:54:44.510 回答
0

如果您只需要从自定义数字(比如说 1001)开始表的 ID。

而且您不确定是否要为此编写迁移,您可以在以下位置运行以下命令rails console

ActiveRecord::Base.connection.execute("SELECT setval('table_name_id_seq', 1000)"

测试对我来说效果很好。希望有帮助。

于 2021-08-02T11:11:14.683 回答