SQL Server重溫 事務
更新時間:2012年08月03日 16:50:22 作者:
當對多個表進行更新的時候,某條執(zhí)行失敗。為了保持數(shù)據(jù)的完整性,需要使用事務回滾
為什么使用事務
當對多個表進行更新的時候,某條執(zhí)行失敗。為了保持數(shù)據(jù)的完整性,需要使用事務回滾。
顯示設置事務
begin try
begin transaction
insert into shiwu (asd) values ('aasdasda');
commit transaction
end try
begin catch
select ERROR_NUMBER() as errornumber
rollback transaction
end catch
隱式設置事務
set implicit_transactions on; -- 啟動隱式事務
go
begin try
insert into shiwu (asd) values ('aasdasda');
insert into shiwu (asd) values ('aasdasda');
commit transaction;
end try
begin catch
select ERROR_NUMBER() as errornumber
rollback transaction; --回滾事務
end catch
set implicit_transactions off; --關閉隱式事務
go
顯示事務以下語句不能使用,隱式事務可以
alter database;
backup;
create database;
drop database;
reconfigure;
restore;
update statistics;
顯示事務可以嵌套使用
--創(chuàng)建存儲過程
create procedure qiantaoProc
@asd nchar(10)
as
begin
begin try
begin transaction innerTrans
save transaction savepoint --創(chuàng)建事務保存點
insert into shiwu (asd) values (@asd);
commit transaction innerTrans
end try
begin catch
rollback transaction savepoint --回滾到保存點
commit transaction innerTrans
end catch
end
go
begin transaction outrans
exec qiantaoProc 'asdasd';
rollback transaction outrans
事務嵌套,回滾外層事務時,如果嵌套內的事務已經回滾過則會有異常。此時需要使用事務保存點。如上代碼。
當對多個表進行更新的時候,某條執(zhí)行失敗。為了保持數(shù)據(jù)的完整性,需要使用事務回滾。
顯示設置事務
復制代碼 代碼如下:
begin try
begin transaction
insert into shiwu (asd) values ('aasdasda');
commit transaction
end try
begin catch
select ERROR_NUMBER() as errornumber
rollback transaction
end catch
隱式設置事務
復制代碼 代碼如下:
set implicit_transactions on; -- 啟動隱式事務
go
begin try
insert into shiwu (asd) values ('aasdasda');
insert into shiwu (asd) values ('aasdasda');
commit transaction;
end try
begin catch
select ERROR_NUMBER() as errornumber
rollback transaction; --回滾事務
end catch
set implicit_transactions off; --關閉隱式事務
go
顯示事務以下語句不能使用,隱式事務可以
復制代碼 代碼如下:
alter database;
backup;
create database;
drop database;
reconfigure;
restore;
update statistics;
顯示事務可以嵌套使用
復制代碼 代碼如下:
--創(chuàng)建存儲過程
create procedure qiantaoProc
@asd nchar(10)
as
begin
begin try
begin transaction innerTrans
save transaction savepoint --創(chuàng)建事務保存點
insert into shiwu (asd) values (@asd);
commit transaction innerTrans
end try
begin catch
rollback transaction savepoint --回滾到保存點
commit transaction innerTrans
end catch
end
go
begin transaction outrans
exec qiantaoProc 'asdasd';
rollback transaction outrans
事務嵌套,回滾外層事務時,如果嵌套內的事務已經回滾過則會有異常。此時需要使用事務保存點。如上代碼。
相關文章
SQl Function 創(chuàng)建函數(shù)實例介紹
這篇文章主要介紹了SQl Function 創(chuàng)建函數(shù)實例介紹,需要的朋友可以參考下2016-10-10MS SQL Server數(shù)據(jù)庫清理錯誤日志的方法
SQL服務器磁盤空間爆滿導致數(shù)據(jù)庫無法訪問。遠程到服務器上,發(fā)現(xiàn)原來是SQL錯誤日志文件惹的禍,數(shù)據(jù)庫在1秒內產生上100M大小的日志,沒多長時間就將磁盤空間堵滿了,下面說說解決方案2013-11-11sql語句優(yōu)化之用EXISTS替代IN、用NOT EXISTS替代NOT IN的語句
sql語句優(yōu)化之用EXISTS替代IN、用NOT EXISTS替代NOT IN的語句...2007-08-08SQL?Server解析/操作Json格式字段數(shù)據(jù)的方法實例
SQL SERVER沒有自帶的解析json函數(shù),需要自建一個函數(shù)(表值函數(shù)),下面這篇文章主要給大家介紹了關于SQL?Server解析/操作Json格式字段數(shù)據(jù)的相關資料,需要的朋友可以參考下2022-08-08SQL Server數(shù)據(jù)庫的修復SQL語句
使用數(shù)據(jù)庫的過程中,由于斷電或其他原因,有可能導致數(shù)據(jù)庫出現(xiàn)一些小錯誤,比如檢索某些表特別慢,查詢不到符合條件的數(shù)據(jù)等。2008-11-11