视图数据可以在mysql中每天更新吗?

时间:2013-09-20 11:02:12

标签: mysql

我在这里创建一个视图

CREATE VIEW customerusage
AS
SELECT group_concat(customername SEPARATOR ' ||| '),
    customerlocation,
    customerid,
    product
FROM customer AS c
INNER JOIN product AS p ON (c.product_id = c.product_id)
GROUP BY product_id

这个表每天都要更新,如果每分钟都做得太精细了。我该如何更新它。除了其他选项之外,还可以查看。

1 个答案:

答案 0 :(得分:0)

您需要使视图可更新。见http://dev.mysql.com/doc/refman/5.6/en/view-updatability.html

总结:

如果视图中的行与基表中将要更新的行之间存在一对一的关系,则视图可更新

如果视图是可更新的,并且基表中存在但未在视图中命名的列具有默认值,则视图为可插入

我认为,表达式group_concat(customername SEPARATOR ' ||| ')将打破一对一的关系。即此表达式可能会阻止您的视图可更新。

表达式GROUP BY product_id肯定会打破视图和基表之间的一对一关系。

反过来说,当您在基表上更新/插入时,它将根据一对一的关系反映在视图上。如果存在这样的关系,则视图将使用MERGE算法,并且基表中的修改将反映在视图中。如果没有这样的一对一关系,则使用的算法将为TEMPLATE,这意味着将为视图创建临时表。有关视图算法,请参阅http://dev.mysql.com/doc/refman/5.0/en/view-algorithms.html