如何禁用MySQL表中的列?

时间:2014-12-09 17:59:09

标签: mysql

我正在更新一个旧的MySQL数据库,发现不需要各个表中的几个列。但是,我不想只是删除列,而是暂时禁用它们,这样我就可以测试代码,看看在我决定完成删除列之前有多少事情发生了。如果访问特定列,如何告诉服务器抛出错误?

2 个答案:

答案 0 :(得分:0)

您可以将表oldname重命名为newname并使用oldname创建视图。该视图看起来像列删除表。如果有问题。你只需更改名称表和视图。

答案 1 :(得分:0)

您可能需要考虑使用视图。作为一个例子,我创造了这个小提琴:http://sqlfiddle.com/#!2/a8947/2

看看这两个查询。一个人选择你不确定你需要的列表(我称之为" legacyData")。另一个选择视图。您可以在视图中看到列" legacyData"不再存在。

如果你从桌子上写字,我不认为这会有效,但如果你正在阅读表格,那么观点是可行的选择。

您希望在制作中尝试使用的步骤是:

  • 重命名您的表格(' myTable'至' myTableDontUse',例如)
  • 根据新重命名的表格
  • 创建视图
  • 命名视图时,请将其命名为表格的原始名称(本例中为myTable)

通过这样做,您已经用视图替换了您的表格。此方法将允许您查看应用程序是否正在访问该表的legacyData字段。如果没有,您可以删除视图,重命名表格,然后删除相关列。

对于视图来说,性能通常不是很好,特别是如果你有大量数据,所以要小心。在类似的情况下,我从一个视图开始,但由于性能原因(表有2M +行),我们改为普通的表,而是通过触发器填充。