[MSSQL]SQL事務處理

  • 通常我們在數據處理中,必須保證數據完整性,一致性。
    (1)批量處理數據,由於數據格式不正確,可能導致數據處理不完整。
    (2)多表數據處理:單頭單身批量寫入。
    (3)銀行轉賬,轉賬金額大於存款餘額
    (4)違法數據約束,如最高工資等 在編寫T-SQL時候,需要用到事務控制。
/****** Object:  StoredProcedure [dbo].[Proc_Test_commit1]    Script Date: 2019/6/21 9:50:14 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Proc_Test_Commit] 
      @Name CHAR(10),
      @Salary INT,
      @result int output, --成功 1; 失敗 0
      @message nvarchar(20) output
  AS
  BEGIN
      SET NOCOUNT ON
 
 declare @Test_Commit table(Name CHAR(10),Salary INT CHECK (Salary<5000)) --定義表變量,爲測試方便增加Salary字段約束小於5000
  begin try 
        begin tran T_ImportData    --事務開始
         insert into @Test_Commit (Name,Salary) values (@Name,@Salary)
       set @result=1
       commit tran T_ImportData    --事務提交        
   end try   
 begin catch
         set @message= ERROR_MESSAGE() 
         set @result=0
         rollback tran T_ImportData    --由於出錯,這裏回滾到開始    
         print ERROR_MESSAGE()
 end catch 
    
     SET NOCOUNT OFF;  
     
 END

測試:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章