新万博-亚博体育app靠谱吗

来源:棋牌游戏代理赚钱吗 时间:2013-12-18 编辑:www.onales.com
导读:注意我们没有为新表定义 id 列。除非我们说不要,否则 Rails 的 migration 迁移自动添加一个名为 id 的主键给它创建的所有表。对这个的深入讨论,可参阅

注意我们没有为新表定义id列。除非我们说不要,否则Railsmigration迁移自动添加一个名为id的主键给它创建的所有表。对这个的深入讨论,可参阅261页的16.3一节。

一、Options For Creating Tables (用于创建表选项)

你可以传递个选项哈希表给create_table,做为它的第二个参数。如果你指定force=>true,则migration迁移将在创建新表前删除现有的同名表。如果你想创建个migration迁移,它强制数据库进入已知状态,这个选项是很用的,但很明显它会丢失数据。

:temporary=>true选项创建一个临时表 --- 当应用程序从数据库断开时,就可以使用它。很明显在migration迁移上下文环境内是无用的,但稍后会看到,在其它地方它还是有用的。

:options=>”xxxx”参数可让你指定用于基础数据库的选项。这些会被添加到CREATE TABLE语句的尾部,即在右圆括号之后。例如,一些MySQL版本允许你指定id列自动增加的初始化值。我们可以像下面这样在migration迁移中传递它:

create_table :tickets, :options => "auto_increment = 10000" do |t|

t.column :created_at, :timestamp

t.column :description, :text

end

在背后,migration迁移将从这个表描述中生成下面DDL

create table tickets (

‘id‘ int(11) default null auto_increment primary key,

‘created_at‘ datetime,

‘description‘ text

) auto_increment = 10000;

当为MySQL使用:options参数时要小心。RailsMySQL适配器设置了ENGINE=InnoDB缺省选项。这会覆写你设置本地缺省值并强迫migration迁移为新表使用InnoDB存储引擎。但是,如果你覆写 :options ,你将会丢失这个设置;新表将会使用你的站点缺省配置的数据库引擎。你可以明确地添加ENGINE=InnoDB给选项字符串来强迫这个标准的行为。

二、Renaming Tables (表的重命名)

如果重构需要我们重命名变量和列,那么它也可能需要我们重命名表名字。

class RenameOrderHistories < ActiveRecord::Migration

def self.up

rename_table :order_histories, :order_notes

end

def self.down

rename_table :order_notes, :order_histories

end

end

注意,down方法是如何通过反向重命名表名来回溯修改的。

分享:

喜欢

阅读┊ ┊ ┊┊ ┊打印┊

加载中,请稍候......

前一篇:Rails-Migration专辑(二)

后一篇:A Short History of the IAI and the IFC Information Model

评论

  • 评论加载中,请稍候...
  • 发评论

    登录名: 密码: 找回密码 注册

    昵   称:

       

    验证码: 请点击后输入验证码

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

    < 前一篇Rails-Migration专辑(二)

    后一篇 >A Short History of the IAI and the IFC Information Model

    猜你喜欢
    娱乐
    3
    大众棋牌游戏安卓
    3
    棋牌游戏代理赚钱吗
    3
    金星棋牌下载地址
    3
    妆容
    3
    网友关注热点
    本网站原创内容(文字、图片)受法律保护,“棋牌游戏代理赚钱吗”欢迎引用和转载传播,但请注明出处。
    Copyright © 2010-2015 棋牌游戏代理赚钱吗 www.onales.com All rights reserved.