`
FZtree
  • 浏览: 111852 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ON UPDATE CURRENT_TIMESTAMP in migration

 
阅读更多

写rails的ruby程序员,很少有知道ON UPDATE CURRENT_TIMESTAMP这样的东西,他们根本不需要。

但是如果是单独使用rails的migration,在php项目或者是nodejs项目,比如

我们就需要用到这个方便的ON UPDATE CURRENT_TIMESTAMP。

 

 

class CreateLevelWeights < ActiveRecord::Migration
  def change
    create_table(:level_weights, options: "ENGINE=MyISAM DEFAULT CHARSET=utf8") do |t|
      t.timestamps
      t.integer :inviter_lv_id, null:false, comment: '邀请人所处的等级id'
      t.integer :order, null:false, comment: '邀请的阶段'
      t.integer :lv_id, null:false, comment: '等级id'
      t.integer :weight, null:false, comment: '权重'
    end
    add_index(:level_weights, [:inviter_lv_id, :order, :lv_id], :unique => true)
    sql_auto_update = 'ALTER TABLE `level_weights` '+\
      'CHANGE COLUMN `created_at` `created_at` TIMESTAMP NOT NULL DEFAULT "2015-01-01 00:00:01", ' +\
      'CHANGE COLUMN `updated_at` `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;'
    execute sql_auto_update
  end
end

 

class CreateLevels < ActiveRecord::Migration
  def change
    create_table(:levels, options: "ENGINE=MyISAM DEFAULT CHARSET=utf8") do |t|
      t.timestamps
      t.string :code, limit:30, null:false, comment:'等级代码'
      t.string :name, limit:30, comment:'等级名称'
      t.integer :queue, null:false, comment:'等级队列'
      t.boolean :is_del, default:false, comment:'是否已被删除'
    end
    add_index(:levels, :queue, :unique => true)
    sql_auto_update = 'ALTER TABLE `levels` ' +\
      'CHANGE COLUMN `created_at` `created_at` TIMESTAMP NOT NULL DEFAULT "2015-01-01 00:00:01", ' +\
      'CHANGE COLUMN `updated_at` `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;'
    execute sql_auto_update
  end
end

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics