Как установить начальное значение идентификатора на create_table? - PullRequest
2 голосов
/ 24 апреля 2009

Я хочу получить столбец идентификатора автоинкремента для команды create_table rails, начинающийся с 500.

Я нашел примеры того, как установить начальное значение идентификатора auto_increment в sql:

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}

Кто-нибудь знает, как получить столбец идентификатора с автоинкрементом, чтобы этот оператор начинался с 500:

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

Ответы [ 4 ]

4 голосов
/ 24 апреля 2009

Попробуйте это:

create_table(:student, :options => 'AUTO_INCREMENT = 500') do |t|
  t.column :name, :string, :limit => 50
  # Other fields here   
end
2 голосов
/ 24 апреля 2009

Оператор SQL для установки этого будет:

ALTER TABLE student AUTO_INCREMENT = 500;
2 голосов
/ 24 апреля 2009

Есть несколько способов сделать это, некоторые специфичные для СУБД (вы не указываете, какую RBDMS вы используете, но таблица MyIsam указывает MySQL).

Но у него неприятный запах; Вы не должны заботиться о синтетическом ключе, кроме того, что он уникален и монотонно увеличивается. Если вы заботитесь, это может означать, что проблема может быть более масштабной.

0 голосов
/ 24 апреля 2009

Это только предположение, но вы пытались вставить (затем удалить) строку в таблице с идентификатором 499?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...