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

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

    • 分享

      SQL事務(wù)回滾的兩種方式

       hdzgx 2019-12-09

      1.XACT_ABORT

      1)set XACT_ABORT off時(shí),回滾產(chǎn)生錯(cuò)誤的Transact-SQL語(yǔ)句,而事務(wù)將繼續(xù)進(jìn)行處理,(注:錯(cuò)誤嚴(yán)重或者語(yǔ)法錯(cuò)誤時(shí)可能回滾整個(gè)事務(wù))

      2) set XACT_ABORT ON時(shí),如果Transact-SQL語(yǔ)句產(chǎn)生運(yùn)行時(shí)錯(cuò)誤,整個(gè)事務(wù)將終止并回滾,

      步驟1:

      1. CREATE TABLE [dbo].[A](
      2. [ID] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
      3. [Name] [nvarchar](5) NULL,
      4. [CreateDate] [datetime] NULL,
      5. CONSTRAINT [PK_A] PRIMARY KEY CLUSTERED
      6. (
      7. [ID] ASC
      8. )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
      9. ) ON [PRIMARY]
      10. GO
      11. --默認(rèn)XACT_ABORT=off
      12. SET XACT_ABORT off
      13. begin tran
      14. insert into [dbo].[A](Name,CreateDate) values('測(cè)試off',GETDATE());
      15. insert into [dbo].[A](Name,CreateDate) values('測(cè)試off_異常',GETDATE());
      16. insert into [dbo].[A](Name,CreateDate) values('測(cè)試off',GETDATE());
      17. commit tran


      (1 行受影響)
      消息 8152,級(jí)別 16,狀態(tài) 4,第 3 行
      將截?cái)嘧址蚨M(jìn)制數(shù)據(jù)。
      語(yǔ)句已終止。

      (1 行受影響)

      select * from [dbo].[A]
      ID Name CreateDate
      1          測(cè)試off

       2018-10-31 15:06:09.330

      3 測(cè)試off 2018-10-31 15:06:09.333

       

      注意:

      事務(wù)的回滾對(duì)于擁有自增主鍵的表來(lái)說(shuō),insert的數(shù)據(jù)是被刪除,update和delete的數(shù)據(jù)是被恢復(fù)  。所以上面所顯示的ID=3 。

      步驟2:

      1. set XACT_ABORT ON
      2. begin tran
      3. insert into [dbo].[A](Name,CreateDate) values('測(cè)試on',GETDATE());
      4. insert into [dbo].[A](Name,CreateDate) values('測(cè)試on_異常',GETDATE());
      5. insert into [dbo].[A](Name,CreateDate) values('測(cè)試on',GETDATE());
      6. commit tran

      同樣執(zhí)行select 查詢語(yǔ)句  得到如下結(jié)果

      ID Name CreateDate
      1          測(cè)試off

       2018-10-31 15:06:09.330

      3 測(cè)試off 2018-10-31 15:06:09.333

      證明事務(wù)全部回滾成功。(注意下次新增數(shù)據(jù)的時(shí)候,ID的值。。。)

       

      2.rollback

      在sql中用事務(wù)的時(shí)候一般是這么寫。
       

      1. declare @error int ;
      2. begin tran
      3. begin try
      4. insert into [dbo].[A](Name,CreateDate) values('測(cè)試異常',GETDATE());
      5. insert into [dbo].[A](Name,CreateDate) values('測(cè)試異常_錯(cuò)誤',GETDATE());
      6. insert into [dbo].[A](Name,CreateDate) values('測(cè)試異常',GETDATE());
      7. end try
      8. begin catch
      9. set @error=1
      10. end catch
      11. if @error>0
      12. rollback tran
      13. else
      14. commit tran

      注:

      判斷事務(wù)回滾,則整個(gè)事務(wù)里面的sql語(yǔ)句一起回滾,跟SET XACT_ABORT ON相似,不同的是當(dāng)事務(wù)進(jìn)行嵌套時(shí),如果用事務(wù)判斷的方法,嵌套的子事務(wù)不出錯(cuò),外面語(yǔ)句出錯(cuò),那么整個(gè)事務(wù)只會(huì)回滾外面出錯(cuò)的語(yǔ)句,子事務(wù)提交成功了就回滾不了了,但是用SET XACT_ABORT ON,即使子事務(wù)提交成功,如果外圍事務(wù)出錯(cuò),子事務(wù)還是回滾.

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(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)論公約

        類似文章 更多