乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Oracle中只更新兩張表對(duì)應(yīng)數(shù)據(jù)的方法 - 51CTO.COM

       汲取者 2010-05-25

      先建立一個(gè)結(jié)構(gòu)一模一樣的表emp1,并為其插入部分?jǐn)?shù)據(jù)

       

      create table emp1
      as
      select * from emp where deptno = 20;

      update掉emp1中的部分?jǐn)?shù)據(jù)

       

      update emp1
      set sal = sal + 100,
      comm = nvl(comm,0) + 50

      然后我們?cè)囍褂胑mp1中數(shù)據(jù)來(lái)更新emp中sal 和 comm這兩列數(shù)據(jù)。

      我們可以這么寫(xiě)

       

      Update emp
      Set(sal,comm) = (select sal,comm. From emp1 where emp.empno = emp1.empno)
      Where exists (select 1 from emp1 where emp1.empno = emp.empno)

      請(qǐng)你尤其注意這里的where子句,你可以嘗試不寫(xiě)where子句來(lái)執(zhí)行以下這句話,你將會(huì)使得emp中的很多值變成空。

      這是因?yàn)樵趏racle的update語(yǔ)句中如果不寫(xiě)where子句,oracle將會(huì)默認(rèn)的把所有的值全部更新,即使你這里使用了子查詢并且某在 值并不能在子查詢里找到,你就會(huì)想當(dāng)然的以為,oracle或許將會(huì)跳過(guò)這些值吧,你錯(cuò)了,oracle將會(huì)把該行的值更新為空。

      我們還還可以這么寫(xiě):

       

      update (select a.sal asal,b.sal bsal,a.comm acomm,
      b.comm bcomm from emp a,emp1 b where a.empno = b.empno)
      set asal = bsal,
      acomm = bcomm;

      這里的表是一個(gè)類(lèi)視圖。當(dāng)然你執(zhí)行時(shí)可能會(huì)遇到如下錯(cuò)誤:

      ERROR 位于第 2 行:

      ORA-01779: 無(wú)法修改與非鍵值保存表對(duì)應(yīng)的列

      這是因?yàn)樾陆ǖ谋韊mp1還沒(méi)有主鍵的緣故

      下面增加一個(gè)主鍵

       

      alter table emp1
                  

       

      add constraint pk_emp1 primary key (empno);

      執(zhí)行之后

      在執(zhí)行前面的語(yǔ)句就能成功。

      這里我們總結(jié)一下:

      在oracle中不存在update from結(jié)構(gòu),所以遇到需要從另外一個(gè)表來(lái)更新本表的值的問(wèn)題的時(shí)候,有兩種解決的辦法:

      一種是使用子查詢,使用子查詢時(shí)一定要注意where條件(一般后面接exists子句),除非兩個(gè)表是一一對(duì)應(yīng)的,否則where條件必不可少, 遺漏掉where條件時(shí)可能會(huì)導(dǎo)致插入大量空值。

      另外一種是類(lèi)視圖的更新方法,這也是oracle所獨(dú)有的。先把對(duì)應(yīng)的數(shù)據(jù)全部抽取出來(lái),然后更新表一樣更新數(shù)據(jù),這里需要注意的是,必須保證表的 數(shù)據(jù)唯一型。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類(lèi)似文章 更多