我在这里创建一个视图
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
这个表每天都要更新,如果每分钟都做得太精细了。我该如何更新它。除了其他选项之外,还可以查看。
答案 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。