mysql中視圖更新詳解

視圖的可更新性與視圖中查詢的定義是有關(guān)的

一、mysql中那些試圖使不可更新的?以下類型的視圖是不可更新的

1.包含以下關(guān)鍵字的sql語句:聚合函數(shù)(sum、min、max、count)、distinct、group by 、having、union或者uinon all

2.常量視圖

3.select 中包含子查詢

4.join

5.from一個(gè)不可更新的試圖

6.where字句的子查詢引用了from字句中的表

二、更新視圖條件限制

WITH[CASCADED | LOCAL] CHECK OPTION確定了更新視圖的條件。

LOCAL代表只要滿足本視圖的條件就可以更新

CASCADED 則必須滿足所有針對(duì)該視圖的所有視圖條件才可以更新

如果沒有明確是local還是cascade,默認(rèn)是cascade

為了便于理解還是通過實(shí)例來說明

已知t3表的數(shù)據(jù)結(jié)構(gòu)如下:

mysql中視圖更新詳解

--?創(chuàng)建視圖?ldq_t1  CREATE?VIEW?ldq_t1?AS?  SELECT?  ??*?  FROM  ??t3?  WHERE?id1?&gt;?10?WITH?CHECK?OPTION?;  --?查詢ldq_t1中的所有結(jié)果  SELECT?*?FROM?ldq_t1;    --?創(chuàng)建視圖?ldq_t2  CREATE?VIEW?ldq_t2?AS?  SELECT?  ??*?  FROM  ??ldq_t1?  WHERE?id1?<p>總結(jié):<span style="color:rgb(90,90,90); font-family:'microsoft yahei'; font-size:18px; line-height:27px; white-space:pre-wrap">WITH   LOCAL CHECK OPTION 修飾的視圖,在更新的時(shí)候,只需要保證更新后的記錄仍然存在該視圖中就可以了,否認(rèn)報(bào)錯(cuò)。而<span style="color:rgb(90,90,90); font-family:'microsoft yahei'; font-size:18px; line-height:27px; white-space:pre-wrap">WITH CASCADED CHECK OPTION修飾視圖,必須保證更新后的記錄仍然存在該視圖以及跟該視圖有關(guān)系的試圖中就可以了。</span></span><br></p><p>?以上就是mysql中視圖更新詳解的內(nèi)容,更多相關(guān)內(nèi)容請(qǐng)關(guān)注PHP中文網(wǎng)(www.php.cn)!<br></p><p></p>
? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊7 分享