0

在这里我正在创建一个视图

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

这张表要每天更新,如果每分钟都更新一次就太好了。我该如何更新它。除了视图之外的任何选项也可以。

4

1 回答 1

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查看算法。

于 2013-09-20T11:16:33.250 回答