mysql视图迁移_mysql – 在多开发人员环境中处理数据库视图的迁移

对于视图或任何可以随时重新定义的数据库对象(例如函数),我发现的最佳实践是将函数的当前定义存储在自己的文件中,例如db / views / your_stuff.view .SQL;然后,每当开发人员想要更改该视图时,他们就会更改该文件,然后添加样板文件迁移,只需从最新版本重新定义视图(我不知道你是否在Rails中,但这里的想法应该是很清楚):

class UpdateYourStuffView < ActiveRecord::Migration

def up

execute File.read("#{Rails.root}/db/views/your_stuff.view.sql")

end

def down

# You could expand this to actually track older versions,

# but that's generally not worth it.

raise ActiveRecord::IrreversibleMigration

end

end

请注意,实际的视图文件应如下所示:

CREATE OR REPLACE VIEW your_stuff AS (SELECT 'x' FROM foos);

这解决了您的问题,因为工作流现在是:

>查看当前的样子:SELECT’x’FROM foos.>开发人员1启动分支A并添加新列.他们修改db / views / your_stuff.view.sql以反映这种变化;他们的迁移只是运行新视图.>开发人员2启动分支B并添加新列.他们修改同一个文件,并像上面一样添加新的迁移.>开发人员2首先完成她的分支并运行迁移.视图现在看起来像SELECT’x’,’z’.>开发人员1现在完成他的分支.但是,要合并到master中,他必须解决视图文件中的冲突.一旦他这样做并运行迁移,视图现在包括所有三列.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值