- 通常我們在數據處理中,必須保證數據完整性,一致性。
(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
測試: