隨筆-204  評論-90  文章-8  trackbacks-0
          觸發(fā)器自動啟用事務(wù),這個事務(wù)的取消會造成整個語句執(zhí)行的失敗

          在自己的機(jī)器上試了一下.我的環(huán)境是:
          WINDOWS SERVER2003 SP1 + SQLSERVER2000 SP4 + ACCESS2003
          觸發(fā)器很簡單,只有一行:
          create trigger trg_update on testtb
          for update
          as
          insert into openrowset('Microsoft.Jet.OLEDB.4.0', 'd:\test.mdb';'admin';'',table1)(id) select id from testtb
          go

          更新表testtb時報錯:
          請求的操作未能執(zhí)行,因?yàn)?OLE DB 提供程序 'Microsoft.Jet.OLEDB.4.0' 不支持所需的事務(wù)接口。
          OLE DB 錯誤跟蹤[OLE/DB Provider 'Microsoft.Jet.OLEDB.4.0' IUnknown:ueryInterface returned 0x80004002]。
          -------------------------------------------------------------------------------------
          如果在insert into openrowset(...)之前加上commit則成功,例如:
          alter trigger trg_update on testtb
          for update
          as
          begin transaction /*啟用嵌套事務(wù)*/
          ... /*嵌套事務(wù)內(nèi)操作*/
          commit /*提交嵌套事務(wù)*/
          commit /*提交觸發(fā)器本身的隱性事務(wù)(即最外層事務(wù))*/
          insert into openrowset('Microsoft.Jet.OLEDB.4.0', 'd:\test.mdb';'admin';'',table1)(id) select id from testtb
          go
          這樣做的實(shí)質(zhì)是觸發(fā)器中必須顯示地使用commit提交觸發(fā)器本身的隱性事務(wù).缺點(diǎn)是向ACCESS插入行的操作不在事務(wù)的控制范圍內(nèi),如果向 ACCESS插入行的操作失敗,那么觸發(fā)器中所有的操作均無法被回滾,因?yàn)閏ommit已經(jīng)結(jié)束了觸發(fā)器的事務(wù),操作已經(jīng)被保存了.這樣的觸發(fā)器實(shí)際上只 是做到了實(shí)時性,卻無法保證SQLSERVER與ACCESS之間的數(shù)據(jù)一致性.

          posted on 2008-02-28 19:46 一凡 閱讀(666) 評論(3)  編輯  收藏 所屬分類: DATABASE

          評論:
          # re: sqlserver觸發(fā)oracle問題... 2008-03-11 17:52 | king81118@126.com
          只是在insert into openrowset('Microsoft.Jet.OLEDB.4.0', 'd:\test.mdb';'admin';'',table1)(id) select id from testtb
          go
          前家個commit 就可以了嗎??
            回復(fù)  更多評論
            
          # re: sqlserver觸發(fā)oracle問題... 2008-03-19 14:40 | 一凡
          不是在go前,而是在insert前  回復(fù)  更多評論
            
          # re: sqlserver觸發(fā)oracle問題...[未登錄] 2009-07-17 17:56 | hh
          哥們,標(biāo)題是“sqlserver觸發(fā)oracle問題...”怎么沒有oracle而是access?????????????????????????????????????????????????  回復(fù)  更多評論
            
          <2008年2月>
          272829303112
          3456789
          10111213141516
          17181920212223
          2425262728291
          2345678

          常用鏈接

          留言簿(9)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          學(xué)習(xí)資源

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 镇远县| 合水县| 博客| 砀山县| 仁怀市| 峡江县| 卢龙县| 宕昌县| 巴林左旗| 保靖县| 高州市| 阜康市| 荆门市| 旺苍县| 曲松县| 肇源县| 噶尔县| 商河县| 长寿区| 收藏| 钟山县| 商水县| 汝州市| 定安县| 华池县| 迭部县| 毕节市| 金乡县| 甘孜县| 崇义县| 龙里县| 营口市| 威远县| 鹤山市| 苏尼特右旗| 辽阳市| 进贤县| 曲阳县| 忻州市| 乳山市| 得荣县|