所以情况是我有一些使用数据库表的代码,我想我可以用另一个表中的视图替换该表。
我可能会重命名/删除现有的表,然后以某种方式创建一个复制表的视图,以便php代码认为它正在使用该表。
也许我应该做的是创建视图,然后在代码中查找并替换表名的所有实例?
模仿或鬼桌的最佳方式是什么?
答案 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中了解更多相关信息。