有可能模仿或鬼脸吗?

时间:2015-05-19 05:34:58

标签: mysql

所以情况是我有一些使用数据库表的代码,我想我可以用另一个表中的视图替换该表。

我可能会重命名/删除现有的表,然后以某种方式创建一个复制表的视图,以便php代码认为它正在使用该表。

也许我应该做的是创建视图,然后在代码中查找并替换表名的所有实例?

模仿或鬼桌的最佳方式是什么?

1 个答案:

答案 0 :(得分:1)

使用

重命名表格
 RENAME TABLE <table_name> TO <new_table_name>;

然后创建与原始table_name同名的视图。当您从表中读取时,您的PHP代码将继续正常运行,而无需进一步操作。如果您的代码还必须更新,删除或插入该视图,则存在某些限制。

  

视图中的行之间必须存在一对一的关系   以及基础表中的行。还有一些其他的   使视图不可更新的构造。更具体一点,一个观点   如果它包含以下任何内容,则不可更新:

     
      
  • 聚合函数(SUM(),MIN(),MAX(),COUNT()等)

  •   
  • DISTINCT

  •   
  • GROUP BY

  •   
  • HAVING

  •   
  • UNION或UNION ALL

  •   
  • 选择列表中的子查询

  •   
  • 某些联接(请参阅本节后面的其他联接讨论)

  •   
  • 引用FROM子句中的nonupdatable视图

  •   
  • WHERE子句中引用FROM子句中的表的子查询

  •   
  • 仅指文字值(在这种情况下,没有要更新的基础表)

  •   
  • ALGORITHM = TEMPTABLE(使用临时表总是使视图无法更新)

  •   
  • 对基表的任何列的多次引用

  •   

manual中了解更多相关信息。