2017-07-24 164 views
0

我有我的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。 –

回答

1

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代碼。數據來自基礎表。