[英]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.