COALESCE是否可以正确使用VIEW?

问题描述:

我有我的view定义:COALESCE是否可以正确使用VIEW?

CREATE VIEW `view` AS 
    SELECT a.id, 
    COALESCE(COALESCE(b.name, c.name), a.name) AS name 
    FROM a_table a 
    LEFT JOIN b_table b on a.b_id = b.id 
    LEFT JOIN c_table c on a.c_id = c.id 

而且我更新a_table一行新name后,它不会在我的view更新。但如果我更改nameCOALESCE(a.name, COALESCE(b.name, c.name)) AS name它的作品。我的理解是COALESCE。它需要第一个not null值,在我的情况下它是b.name,只有当b.name更新时才会更新。

COALESCE值中的任何一个被更改时,是否有更新view的选项?

+1

我删除了不兼容的数据库标记。反引号建议您使用MySQL。 –

COALESCE()在视图中正常工作。它也需要多个参数,所以我建议这样写:

CREATE VIEW `view` AS 
    SELECT a.id, COALESCE(b.name, c.name, a.name) AS name 
    FROM a_table a LEFT JOIN 
     b_table b 
     ON a.b_id = b.id LEFT JOIN 
     c_table c 
     ON a.c_id = c.id; 

视图不是“更新”。它们是当视图是引用时插入到查询中的SQL代码。数据来自基础表。