哪吒2之魔童闹海|哪吒2之魔童归来免费观看|哪吒2在线观看|哪吒2魔童闹海电影免费观看|哪吒2免费观看完整版大电影|哪吒1免费观看完整版

新疆軟件開發(fā)

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

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

                             本文中,我們通過實(shí)例的方法來(lái)幫助您理解物化視圖刷新過程中出現(xiàn)的約束沖突問題。
  即使將物化視圖的約束建立和基表完全一致,由于物化視圖的刷新機(jī)制,也會(huì)產(chǎn)生約束沖突的現(xiàn)象。
  以下是一個(gè)簡(jiǎ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;
--實(shí)體化視圖日志已創(chuàng)建:
SQL> CREATE MATERIALIZED VIEW MV_T REFRESH FAST AS SELECT * FROM T;
--實(shí)體化視圖已創(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)造了一個(gè)簡(jiǎn)單的物化視圖,物化視圖和基表建立了相同的唯一約束。 
 下面進(jìn)行一個(gè)循環(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: 實(shí)體化視圖的刷新路徑中存在錯(cuò)誤
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
  刷新失敗了。解決這個(gè)問題的一個(gè)方法是對(duì)于物化視圖不建立唯一約束,唯一性由基表保證。但是這種方法只對(duì)只讀物化視圖適用。而且,缺少唯一約束信息,可能會(huì)影響SQL的執(zhí)行計(jì)劃。

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

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 過程已成功完成。
 


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

作者:未知 | 文章來(lái)源:未知 | 更新時(shí)間:2008-1-19 18:33:29

  • 上一篇文章:

  • 下一篇文章:

  • 相關(guān)文章:
    沒有相關(guān)文章
    軟件技術(shù)
    · 開發(fā)語(yǔ)言
    · Java技術(shù)
    · .Net技術(shù)
    · 數(shù)據(jù)庫(kù)開發(fā)
    最新文章  
    ·Domino平臺(tái)的優(yōu)缺點(diǎn)分析
    ·oracle不能連接本地庫(kù)的解
    ·使用經(jīng)驗(yàn)整理-TestDirecto
    ·學(xué)習(xí)sqlserver數(shù)據(jù)庫(kù)的維度
    ·sqlserver 多用戶并發(fā)中如
    ·丟失日志文件后數(shù)據(jù)庫(kù)還能
    ·人工智能在數(shù)據(jù)庫(kù)sql語(yǔ)句編
    ·數(shù)據(jù)庫(kù)學(xué)習(xí):Oracle應(yīng)用程
    ·基礎(chǔ)知識(shí):軟件測(cè)試的要點(diǎn)
    ·技術(shù)文章:sqlserver 2008
    ·SQL Server虛擬內(nèi)存和物理
    ·在MySQL中 describe命令怎
    ·怎樣解決視圖刷新時(shí)出現(xiàn)的
    ·如果忘記了MySQL的root用戶
    ·基礎(chǔ)學(xué)習(xí):基于SQL的sysob
    關(guān)于我們 | 軟件開發(fā) | 下載試用 | 客服中心 | 聯(lián)系我們 | 友情鏈接 | 網(wǎng)站地圖 | 新疆電子地圖 | RSS訂閱
    版權(quán)所有 © 2016 新疆二域軟件開發(fā)網(wǎng) www.pg11qqq.com All Rights Reserved 新ICP備14003571號(hào)
    新疆軟件開發(fā)總機(jī):0991-4842803、4811639.
    客服QQ:596589785 ;地址:新疆烏魯木齊北京中路華聯(lián)大廈A-5C 郵編:830000