是否有可能通过简单地提供新的模式和具有数据库计算出如何迁移到改变MySQL表的架构改变MySQL表?例如,假设我有一个包含两列的表:id,name。我想通过添加一个新的列来修改这个表格:title。我知道我可以发出命令ALTER TABLE tbl ADD COLUMN标题。有没有一种方法可以提供完整的模式,并让mysql知道需要添加标题列?通过提供新的模式
我希望是有道理的什么,我问。
是否有可能通过简单地提供新的模式和具有数据库计算出如何迁移到改变MySQL表的架构改变MySQL表?例如,假设我有一个包含两列的表:id,name。我想通过添加一个新的列来修改这个表格:title。我知道我可以发出命令ALTER TABLE tbl ADD COLUMN标题。有没有一种方法可以提供完整的模式,并让mysql知道需要添加标题列?通过提供新的模式
我希望是有道理的什么,我问。
的MySQL本身不能做到这一点,但我发现一个blog,说MySQL工作台可以做到这一点。
没有 - 它不能这样做只是让你的数据库的新模式。它将不得不去猜测如何处理数据。 (同样会发生什么触发器,存储过程...)
你有两个选择
需要多少“第二次猜测”?只需匹配旧模式和新模式中的列,并使用适当的“添加列”,“修改列”和“删除列”参数执行“alter table”。它不能自动计算出来的唯一情况是如果你想重命名一列。 – Barmar
...考虑存储过程,触发器,数据的使用以及一个表的更改如何影响另一个表。您是否想要最好的资产,您不必考虑删除列(例如)会影响参照完整性的某些含义)。 –