• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Prayer

            在一般中尋求卓越
            posts - 1256, comments - 190, trackbacks - 0, articles - 0
              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            帶檢查選項(xiàng)的嵌套視圖

            Posted on 2010-05-09 19:00 Prayer 閱讀(213) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): DB2

            先前定義的 NONFICTIONBOOKS 視圖只包含 BOOKTYPE 為 N 的行。如果向這個(gè)視圖中插入一個(gè) BOOKTYPE 為 F 的行,DB2 將把該行插入到基表 BOOKS 中。但是,如果以后從視圖中進(jìn)行選擇,通過(guò)該視圖卻看不到新插入的行。如果不想允許用戶(hù)插入視圖范圍以外的行,那么在定義視圖時(shí)可以使用檢查選項(xiàng)。使用 WITH CHECK OPTION 定義視圖會(huì)讓 DB2 檢查使用視圖的語(yǔ)句是否滿(mǎn)足視圖的條件。

              下面的語(yǔ)句用 WITH CHECK OPTION 定義一個(gè)視圖:

            CREATE VIEW NONFICTIONBOOKS AS
                SELECT * FROM BOOKS WHERE BOOKTYPE = 'N'
                WITH CHECK OPTION

              這個(gè)視圖仍然限制用戶(hù)只能看到非小說(shuō)類(lèi)的書(shū);另外,它還防止用戶(hù)插入 BOOKTYPE 列的值不為 N 的行,并防止把現(xiàn)有行中 BOOKTYPE 列的值更新為 N 以外的值。例如,下列語(yǔ)句將不再允許使用:

            INSERT INTO NONFICTIONBOOKS VALUES (...,'F');
            UPDATE NONFICTIONBOOKS SET BOOKTYPE = 'F' WHERE BOOKID = 111

             

            在定義嵌套視圖時(shí),檢查選項(xiàng)可以用于限制操作。但是,還可以指定其他子句來(lái)定義如何繼承限制。檢查選項(xiàng)可以定義為 CASCADED 或 LOCAL。如果沒(méi)有指定關(guān)鍵字,CASCADED 是默認(rèn)值。為說(shuō)明 CASCADED 和 LOCAL 行為的不同,我們來(lái)看幾個(gè)可能的場(chǎng)景。


            當(dāng)用 WITH CASCADED CHECK OPTION 創(chuàng)建視圖時(shí),所有針對(duì)該視圖執(zhí)行的語(yǔ)句都必須滿(mǎn)足視圖和所有底層視圖的條件 —— 即使那些視圖不是帶檢查選項(xiàng)定義的,也是如此。假設(shè)在創(chuàng)建 NONFICTIONBOOKS 時(shí)沒(méi)有帶檢查選項(xiàng),也可以使用 CASCADED 關(guān)鍵字在視圖 NONFICTIONBOOKS 的基礎(chǔ)上創(chuàng)建視圖 NONFICTIONBOOKS1:

            CREATE VIEW NONFICTIONBOOKS AS
                SELECT * FROM BOOKS WHERE BOOKTYPE = 'N'
            CREATE VIEW NONFICTIONBOOKS1 AS
                SELECT * FROM NONFICTIONBOOKS WHERE BOOKID > 100
                WITH CASCADED CHECK OPTION

              將不允許下列 INSERT 語(yǔ)句,因?yàn)樗鼈儾粷M(mǎn)足其中至少一個(gè)視圖的條件:

            INSERT INTO NONFICTIONBOOKS1 VALUES( 10,..,'N')
            INSERT INTO NONFICTIONBOOKS1 VALUES(120,..,'F')
            INSERT INTO NONFICTIONBOOKS1 VALUES( 10,..,'F')

              但是,會(huì) 允許下面的 INSERT 語(yǔ)句,因?yàn)檫@兩個(gè)視圖的條件它都滿(mǎn)足:

            INSERT INTO NONFICTIONBOOKS1 VALUES(120,...,'N')

              接下來(lái),假設(shè)用 WITH LOCAL CHECK OPTION 在視圖 NONFICTIONBOOKS 的基礎(chǔ)上創(chuàng)建視圖 NONFICTIONBOOKS2。現(xiàn)在,針對(duì)這個(gè)視圖執(zhí)行的語(yǔ)句只需要滿(mǎn)足指定了檢查選項(xiàng)的視圖的條件:

            CREATE VIEW NONFICTIONBOOKS AS
                SELECT * FROM BOOKS WHERE BOOKTYPE = 'N'
            CREATE VIEW NONFICTIONBOOKS2 AS
                SELECT * FROM NONFICTIONBOOKS WHERE BOOKID > 100
                WITH LOCAL CHECK OPTION

              在這種情況下,將不允許下面的 INSERT 語(yǔ)句,因?yàn)樗鼈儾粷M(mǎn)足 NONFICTIONBOOKS2 視圖的 BOOKID > 100 這個(gè)條件:


            INSERT INTO NONFICTIONBOOKS2 VALUES(10,..,'N')
            INSERT INTO NONFICTIONBOOKS2 VALUES(10,..,'F')

              但是,盡管值 N 不滿(mǎn)足 NONFICTIONBOOKS 視圖的 BOOKTYPE = 'N' 這個(gè)條件,也會(huì)允許下面的 INSERT 語(yǔ)句:

            INSERT INTO NONFICTIONBOOKS2 VALUES(120,..,'N')
            INSERT INTO NONFICTIONBOOKS2 VALUES(120,..,'F')

            久久美女人爽女人爽| 亚洲色大成网站WWW久久九九| 国产成年无码久久久久毛片| 国内精品久久久久| 久久影院午夜理论片无码 | 久久久久亚洲AV成人网人人网站 | 欧美精品一区二区久久| 热99RE久久精品这里都是精品免费| 亚洲国产欧美国产综合久久| 99久久夜色精品国产网站| 亚洲欧洲久久av| 国产午夜精品理论片久久| 色欲久久久天天天综合网精品| 精品久久人人爽天天玩人人妻 | 欧美成人免费观看久久| 亚洲精品国产成人99久久| 伊人色综合久久天天人手人婷 | 久久人人爽人人爽人人片av麻烦| 国产精品久久久久久搜索| 亚洲午夜久久久| 久久99中文字幕久久| 囯产极品美女高潮无套久久久 | 亚洲午夜无码AV毛片久久| 青青热久久综合网伊人| 久久久久人妻精品一区| 久久99这里只有精品国产| 久久天天躁狠狠躁夜夜2020老熟妇| 国产一级做a爰片久久毛片| 无码AV中文字幕久久专区| 超级97碰碰碰碰久久久久最新| 亚洲国产成人精品无码久久久久久综合 | 91精品婷婷国产综合久久| 国产精品久久久久影院嫩草| 日产精品久久久久久久| 亚洲日韩中文无码久久| 亚洲精品乱码久久久久久| 久久这里只有精品首页| 超级97碰碰碰碰久久久久最新| 久久久久久国产精品美女| 99精品国产综合久久久久五月天| 亚洲国产欧美国产综合久久|