• <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')

            久久综合给久久狠狠97色| 久久久久亚洲AV无码专区体验| 久久久久一区二区三区| 国产精品成人无码久久久久久| 日韩欧美亚洲综合久久影院Ds | 中文字幕亚洲综合久久2| 97久久精品人人澡人人爽| 亚洲国产精品成人久久蜜臀| 无码人妻精品一区二区三区久久久| 精品一区二区久久久久久久网站| 欧美久久亚洲精品| 国产精品久久久久影院嫩草| 亚洲国产成人久久笫一页| 国产精品久久亚洲不卡动漫| 无码人妻久久一区二区三区蜜桃| 青青青青久久精品国产h| 囯产精品久久久久久久久蜜桃| 一本久久久久久久| 久久久久亚洲AV成人片| 久久久久国色AV免费看图片 | 99久久99久久精品国产片| 精品久久久中文字幕人妻| 2021国产成人精品久久| 久久99亚洲网美利坚合众国| 无码任你躁久久久久久老妇| 久久综合狠狠综合久久激情 | 亚洲人成网亚洲欧洲无码久久| 久久一区二区免费播放| 国产福利电影一区二区三区久久久久成人精品综合 | 精品国产99久久久久久麻豆| 久久se精品一区二区影院| 久久久久久亚洲AV无码专区 | AV色综合久久天堂AV色综合在| 久久人人爽人人爽人人av东京热| 久久久噜噜噜久久中文字幕色伊伊| 久久国产精品免费一区| 国内精品久久久久久麻豆| 久久久久成人精品无码| 久久夜色精品国产www| 欧美大战日韩91综合一区婷婷久久青草 | 亚洲狠狠婷婷综合久久久久|