Hatena::Grouphsj

HSJ.(中略).jp - いろいろお勉強コーナー このページをアンテナに追加 RSSフィード

2006年01月02日Migrationまとめ

[][][] Migrationまとめ - HSJ.(中略).jp - いろいろお勉強コーナー を含むブックマーク

対応しているRDBMS

ほかにもあるかも。

CREATE TABLE / DROP TABLE

class AddSampleRecords < ActiveRecord::Migration
   def self.up
      create_table :sample_records do |t|
         t.column :name,     :string, 
         t.column :value,    :integer
      end
   end

   def self.down
      drop_table :sample_records
   end
end

ALTER TABLE ADD COLUMN

class AddSampleRecordColumn < ActiveRecord::Migration
   def self.up
      add_column :sample_records, :addtional_column, :boolean, :default => 1
   end

   def self.down
      remove_column :sample_records, :addtional_column
   end
end

migrationの抽象表現→カラムマッピング一覧

ベースhttp://wota.jp/ac/?date=20050817

日本でよく使われているものをチョイスしてみた。

抽象表現RubyPostgreSQLMySQLSQLiteOracleSQL Server
:primary_keyFixnumserial primary keyint(11) DEFAULT NULL auto_increment PRIMARY KEYINTEGER PRIMARY KEY NOT NULLNUMBER(38) NOT NULL PRIMARY KEYint NOT NULL IDENTITY(1, 1) PRIMARY KEY
:stringStringcharacter varying(255)varchar(255)varchar(255)VARCHAR2(255)varchar(255)
:textStringtexttexttextCLOBtext
:integerFixnumintegerint(11)integerNUMBER(38)int
:floatFloatfloatfloatfloatNUMBERfloat(8)
:datetimeTimetimestampdatetimedatetimeDATEdatetime
:timestampTimetimestampdatetimedatetimeDATEdatetime
:timeTimetimestampdatetimedatetimeDATEdatetime
:dateDatedatedatedateDATEdatetime
:binaryStringbyteablobblobBLOBimage
:booleanObjectbooleantinyint(1)booleanNUMBER(1)bit

尚、上記表以外のRDBMSマッピングがどうなっているか分からない場合は、ActiveRecord::ConnectionAdapters::~Adapter#native_database_typesを確認すればよい。

対応しているColumnOption

t.column(:sample_col, :string, :limit => 20, :default => 'new', :null => false)
:limit

ラム長を制限する。

対象となる型は:string,:text,:binary,:integer

:default

デフォルト値を設定する。初期値はNULL。

:null

NULL値を許可するかどうかをboolean値で設定する。

:null_allowedというシンボルだけでも許可を表現できる。

ALTER TABLE MODIFY / ALTER COLUMN

class AlterModifySampleRecordColumn < ActiveRecord::Migration
   def self.up
      rename_column :sample_records, :old_column_name, :new_column_name
      change_column :sample_records, :modify_column, :new_column_type
   end
   def self.down
   end
end

CREATE INDEX / DROP INDEX

class AddSampleRecordsIndex < ActiveRecord::Migration
   def self.up
      add_index :sample_records, :id, :integer
   end
   def self.down
      drop_index :sample_records, :id
   end
end

b-viagrab-viagra2007/03/30 03:35Hi all!
Buy viagra drugs at cheap online pharmacy:
<a href=http://rasklad.net.in/viagra/#cheap-viagra>order viagra</a> <a href="http://rasklad.net.in/viagra/#cheap-viagra">viagra online</a> http://rasklad.net.in/viagra/#buy-cheap-viagra
Bye