天天看點

資料庫三種事務

什麼是事務 是不可分割的邏輯單元,由多個操作部分組成

select  GETDATE()--函數      

1.自動送出事務

insert、update、delete都是自動送出事務

比如一個學生表和班級表有外鍵限制 隻删掉班級表的資料是執行不了的

insert into Student

values('張三','男',20,'2020-3-16')

commit;一旦送出就持久化了,不能再復原

rollback;

我們先執行insert再復原報錯

COMMIT TRANSACTION 請求沒有對應的 BEGIN TRANSACTION

2.隐式事務

我們開啟開啟隐式事務

set implicit_transactions on--開啟隐式事務、off關閉      

先insert在復原資料就沒有了這樣的資料叫髒資料,相當于緩存,需要手動持久化送出

3.顯示事務

--開始事務
begin transaction

declare @errorNum int =0--定義存放錯誤的結果
update Student set age=Age+10  where ID=12
set @errorNum=@errorNum+@@ERROR--非零

update Student set age=Age-10  where ID=10
set @errorNum=@errorNum+@@ERROR--非零


if @errorNum<>0
begin
rollback transaction
end 
else
begin
commit transaction
end      

模仿銀行存錢,隻要兩條語句有一條執行失敗就會復原