写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