无法在Mysql中创建可更新的视图

时间:2015-08-28 12:44:39

标签: mysql

我试试这个:

CREATE VIEW ALL_urls AS 

SELECT * FROM TABLE1_urls 
UNION ALL 
SELECT * FROM TABLE2_urls
UNION ALL 
SELECT * FROM TABLE3_urls
UNION ALL 
SELECT * FROM TABLE4_urls

但是当我搜索" information_schema"我明白了:

IS_UPDATABLE
NO

任何想法如何使它"可更新"?

1 个答案:

答案 0 :(得分:0)

  

某些视图可以更新。也就是说,您可以在语句中使用它们   作为UPDATE,DELETE或INSERT来更新底层的内容   表。要使视图可更新,必须一对一   视图中的行与中的行之间的关系   基础表。还有一些其他构造成为   查看不可更新。更具体地说,如果视图不可更新   包含以下任何内容:

     

聚合函数(SUM(),MIN(),MAX(),COUNT()等)   在选择中具有UNION或UNION ALL子查询的DISTINCT GROUP   list某些连接(请参阅本文后面的其他连接讨论   FROM)FROM子句中的Nonupdatable视图WHERE中的子查询   引用FROM子句中的表的子句仅指   文字值(在这种情况下,没有要更新的基础表)   使用ALGORITHM = TEMPTABLE(使用临时表总是会产生一个   view nonupdatable)对基表的任何列的多个引用。   [deletia]

     

有时候多表视图可以更新,   假设它可以使用MERGE算法进行处理。为了这   要工作,视图必须使用内连接(不是外连接或   联盟)。此外,视图定义中只能有一个表   已更新,因此SET子句必须只列出其中一列的列   视图中的表。甚至不允许使用UNION ALL的视图   虽然它们可能在理论上是可更新的,因为   实现使用临时表来处理它们。