如何在create_table上设置初始id值?

时间:2009-04-23 23:43:00

标签: sql ruby-on-rails

我想让create_table rails命令的自动递增id列从500开始。

我找到了如何在sql:

中设置初始auto_increment id值的示例
CREATE TABLE student ( id int(2) NOT NULL auto_increment, name varchar(50) NOT NULL default '', class varchar(10) NOT NULL default '', mark int(3) NOT NULL default '0', sex varchar(6) NOT NULL default 'male', UNIQUE KEY id (id) ) auto_increment=100000 TYPE=MyISAM; 

所以我查看了Rails API并在create_table方法上看到了这些选项:

The options hash can include the following keys:

:id
    Whether to automatically add a primary key column. Defaults to true. Join tables for has_and_belongs_to_many should set :id => false. 
:primary_key
    The name of the primary key, if one is to be added automatically. Defaults to id. 
:options
    Any extra options you want appended to the table definition. 
:temporary
    Make a temporary table. 
:force
    Set to true to drop the table before creating it. Defaults to false. 

不是我需要的......我尝试了这个没有成功:

:options => {:auto_increment => 500}

任何人都知道如何让此语句的自动递增id列从500开始:

create_table :contents do |t|
  t.string  :type,                :null => false
  t.string  :name,                :null => false
end

4 个答案:

答案 0 :(得分:4)

试试这个:

create_table(:student, :options => 'AUTO_INCREMENT = 500') do |t|
  t.column :name, :string, :limit => 50
  # Other fields here   
end

答案 1 :(得分:2)

设置它的SQL语句是:

ALTER TABLE student AUTO_INCREMENT = 500;

答案 2 :(得分:2)

有很多方法可以做到这一点,特定于某些RDBMS(您没有指定您正在使用的RBDMS,但MyIsam表指示MySQL)。

但它的味道很难闻;你不应该关心合成密钥,除了它是独特的和单调增加的。你关心的事情表明可能存在更大的问题。

答案 3 :(得分:0)

这只是一个猜测,但您是否尝试在ID为499的表格中插入(然后删除)一行?