簡體   English   中英

COALESCE是否可以與VIEW一起正常使用?

[英]Does COALESCE work properly with VIEWs?

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

在用新name更新a_table行之后,它在我的view中不會得到更新。 但是,如果我將name更改為COALESCE(a.name, COALESCE(b.name, c.name)) AS name它就可以工作。

據我了解,原因在COALESCE 它采用第一個not null值,在我的情況下為b.name ,僅在更新b.name更新。

更改任何COALESCE值時,是否可以選擇更新view

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM