数据库 怎么操作才能使数据库中表记录的 id 从 100 万开始

dxdxdx · 2012年02月24日 · 最后由 dxdxdx 回复于 2012年02月27日 · 4383 次阅读

最近捣鼓一个项目,开发环境如下

rails-3.1.3, 数据库用的是 postgresql,orm 用的是 activerecord.

默认情况下,数据库里表记录的 id 是从 1 开始,但是客户提出一个合理要求说表记录的 id 要从 100 万开始,开始想到的办法是创建一百万条记录然后再删除这一百万条记录,但是感觉这个方法很二,不知道哪位同学有没有更好的办法?谢谢!

。。确实够 2 的,两种方法:

1、改表:

alter table your_table_name auto_increment = 1000000;

这个是 mysql 的实现方式,postgrelsql 的忘了有没有,google 一下。

2、new 一条数据,然后再强制赋值 id,再把这条数据删了。

row = Table.new(:a =>.......)
row.id =  999999
row.save!
row.destory

我在用 mysql 数据库的时候,migration 是这么写的,不知道 postgre 是否一样:

create_table :roles, options: 'AUTO_INCREMENT = 10001' do |t|

如果不想新建表的话,应该用 sql 没有问题吧,这个我们也干过

1 楼的帖子里不是说了么⋯⋯但是我没有验证,因为不用 postgresql。 SQL 语句是

ALTER SEQUENCE table_name_id_seq RESTART WITH 1000000;

修改这张表的 id 初始自动增长属性。。mysql 和 sqlserver 都有的。

貌似这个问题和 ruby 没啥关系啊...

class CreateUses < AR:Migration
  def change
    create_table :users do |t|
      ...
    end

    execute <<-SQL
      ALTER SEQUENCE users_id_seq
        START 1000000
        RESTART 1000000
    SQL
  end
end

这种问题翻文档就好了。PG 的文档超清晰的。不知道是不是德国人写的,废话相当少。

这个问题已经解决,感谢楼上各位的帮助,我采用的是@zhangyuan 提供的方案

需要 登录 后方可回复, 如果你还没有账号请 注册新账号