扒开腿挺进岳湿润的花苞视频|将军边走边挺进她H树林|挺进朋友人妻张婉莹身体|岳脱得精光让我挺进去视频|第一次挺进莹莹的身体里视频|脱岳裙子从后面挺进去视频

新疆軟件開發(fā)

本站首頁 軟件開發(fā) 成功案例 公司新聞 公司簡介 客服中心 軟件技術(shù) 網(wǎng)站建設(shè)
  您現(xiàn)在的位置: 新疆二域軟件開發(fā)公司 >> 數(shù)據(jù)庫開發(fā) >> 文章正文

怎樣解決視圖刷新時出現(xiàn)的約束沖突

                             本文中,我們通過實例的方法來幫助您理解物化視圖刷新過程中出現(xiàn)的約束沖突問題。
  即使將物化視圖的約束建立和基表完全一致,由于物化視圖的刷新機(jī)制,也會產(chǎn)生約束沖突的現(xiàn)象。
  以下是一個簡單的示例:
SQL> CREATE TABLE T (ID NUMBER PRIMARY KEY, NAME VARCHAR2(30));
--表已創(chuàng)建
SQL> ALTER TABLE T ADD CONSTRAINT UN_T_NAME UNIQUE (NAME);
--表已更改
SQL> CREATE MATERIALIZED VIEW LOG ON T;
--實體化視圖日志已創(chuàng)建:
SQL> CREATE MATERIALIZED VIEW MV_T REFRESH FAST AS SELECT * FROM T;
--實體化視圖已創(chuàng)建。
SQL> ALTER TABLE MV_T ADD CONSTRAINT UN_MV_T_NAME UNIQUE (NAME);
--表已更改:
SQL> INSERT INTO T VALUES (1, ’A’);
--已創(chuàng)建 1 行:
SQL> INSERT INTO T VALUES (2, ’B’);
--已創(chuàng)建 1 行:
SQL> COMMIT;
--提交完成:
SQL> EXEC DBMS_MVIEW.REFRESH(’MV_T’)
--PL/SQL 過程已成功完成。
  上面構(gòu)造了一個簡單的物化視圖,物化視圖和基表建立了相同的唯一約束。 
 下面進(jìn)行一個循環(huán)的更新操作,然后觀察刷新的情況:
SQL> UPDATE T SET NAME = ’C’ WHERE ID = 1;
--已更新 1 行。
SQL> UPDATE T SET NAME = ’A’ WHERE ID = 2;
--已更新 1 行。
SQL> UPDATE T SET NAME = ’B’ WHERE ID = 1;
--已更新 1 行。
SQL> COMMIT;
--提交完成。
SQL> EXEC DBMS_MVIEW.REFRESH(’MV_T’)
BEGIN DBMS_MVIEW.REFRESH(’MV_T’); END;
*
ERROR 位于第 1 行:
ORA-12008: 實體化視圖的刷新路徑中存在錯誤
ORA-00001: 違反唯一約束條件 (YANGTK.UN_MV_T_NAME)
ORA-06512: 在"SYS.DBMS_SNAPSHOT", line 794
ORA-06512: 在"SYS.DBMS_SNAPSHOT", line 851
ORA-06512: 在"SYS.DBMS_SNAPSHOT", line 832
ORA-06512: 在line 1
  刷新失敗了。解決這個問題的一個方法是對于物化視圖不建立唯一約束,唯一性由基表保證。但是這種方法只對只讀物化視圖適用。而且,缺少唯一約束信息,可能會影響SQL的執(zhí)行計劃。

  這種情況下,最好的解決方法是建立延遲約束。

SQL> ALTER TABLE MV_T DROP CONSTRAINT UN_MV_T_NAME;
--表已更改。
SQL> ALTER TABLE MV_T ADD CONSTRAINT 
UN_MV_T_NAME UNIQUE (NAME) DEFERRABLE;
--表已更改。
SQL> EXEC DBMS_MVIEW.REFRESH(’MV_T’)
--PL/SQL 過程已成功完成。
 


  注釋:延遲唯一約束對應(yīng)的索引也必須是非唯一的,否則無法達(dá)到延遲約束的目的。

作者:未知 | 文章來源:未知 | 更新時間:2008-1-19 18:33:29

  • 上一篇文章:

  • 下一篇文章:

  • 相關(guān)文章:
    沒有相關(guān)文章
    軟件技術(shù)
    · 開發(fā)語言
    · Java技術(shù)
    · .Net技術(shù)
    · 數(shù)據(jù)庫開發(fā)
    最新文章  
    ·Domino平臺的優(yōu)缺點分析
    ·oracle不能連接本地庫的解
    ·使用經(jīng)驗整理-TestDirecto
    ·學(xué)習(xí)sqlserver數(shù)據(jù)庫的維度
    ·sqlserver 多用戶并發(fā)中如
    ·丟失日志文件后數(shù)據(jù)庫還能
    ·人工智能在數(shù)據(jù)庫sql語句編
    ·數(shù)據(jù)庫學(xué)習(xí):Oracle應(yīng)用程
    ·基礎(chǔ)知識:軟件測試的要點
    ·技術(shù)文章:sqlserver 2008
    ·SQL Server虛擬內(nèi)存和物理
    ·在MySQL中 describe命令怎
    ·怎樣解決視圖刷新時出現(xiàn)的
    ·如果忘記了MySQL的root用戶
    ·基礎(chǔ)學(xué)習(xí):基于SQL的sysob
    關(guān)于我們 | 軟件開發(fā) | 下載試用 | 客服中心 | 聯(lián)系我們 | 友情鏈接 | 網(wǎng)站地圖 | 新疆電子地圖 | RSS訂閱
    版權(quán)所有 © 2016 新疆二域軟件開發(fā)網(wǎng) m.jdtbank.com All Rights Reserved 新ICP備14003571號
    新疆軟件開發(fā)總機(jī):0991-4842803、4811639.
    客服QQ:596589785 ;地址:新疆烏魯木齊北京中路華聯(lián)大廈A-5C 郵編:830000
     
    抚松县| 潜山县| 黔东| 宿迁市| 绥宁县| 五大连池市| 开平市| 江山市| 泌阳县| 获嘉县| 汕头市| 屏山县| 织金县| 原平市| 兴义市| 潼南县| 金平| 友谊县| 邢台县| 白朗县| 松潘县| 濉溪县| 昌黎县| 达州市| 开化县| 洛扎县| 通化县| 广南县| 广昌县| 高尔夫| 沙洋县| 囊谦县| 恩平市| 留坝县| 盘锦市| 凌海市| 特克斯县| 玛沁县| 黄大仙区| 大庆市| 合阳县|