什麼是事務 是不可分割的邏輯單元,由多個操作部分組成
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
模仿銀行存錢,隻要兩條語句有一條執行失敗就會復原