2009-04-23 4 views
2

ich die automatische Inkrementieren id Spalte für ein create_table Schienen bekommen Befehl bei 500Wie wird ein initialer ID-Wert für eine create_table gesetzt?

Ich habe festgestellt, Beispiele zu beginnen, wie die anfängliche auto_increment ID-Wert in SQL einzustellen:

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; 

So ich schaute auf die Rails API und sah diese Optionen auf der create_table Methode:

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. 

Nicht das, was ich brauche ... ich habe versucht, dies ohne Erfolg:

:options => {:auto_increment => 500} 

Wer weiß, wie die automatische Inkrementieren id Spalte für diese Erklärung bekommen bei 500 zu starten:

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

Antwort

4

Versuchen Sie folgendes:

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

Das tat es! Vielen Dank! – Matthew

+0

Gut - ich konnte es nicht wirklich testen, als ich es gepostet habe! :-) –

0

Dies ist nur eine Vermutung, aber haben Sie versucht, das Einfügen (dann zu löschen) eine Zeile in der Tabelle bei ID von 499?

2

Die SQL-Anweisung würde dies zu setzen:

ALTER TABLE student AUTO_INCREMENT = 500; 
2

Es gibt eine Reihe von Möglichkeiten, dies zu tun, einige spezifische RDBMS (Sie nicht festlegen, was RBDMS Sie verwenden, aber die MyISAM-Tabelle zeigt MySQL an).

Aber es hat einen schlechten Geruch; Sie sollten sich nicht um einen synthetischen Schlüssel kümmern, außer dass er einzigartig und monoton ansteigt. Dass du dich sorgst, legt nahe, dass es ein größeres Problem geben könnte.

Verwandte Themen