服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Sql Server - SQL Server重温 事务

SQL Server重温 事务

2019-12-21 15:31MSSQL教程网 Sql Server

当对多个表进行更新的时候,某条执行失败。为了保持数据的完整性,需要使用事务回滚

为什么使用事务 
  当对多个表进行更新的时候,某条执行失败。为了保持数据的完整性,需要使用事务回滚。 
显示设置事务 

复制代码代码如下:


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; 


显示事务可以嵌套使用 

复制代码代码如下:


--创建存储过程 
create procedure qiantaoProc 
@asd nchar(10) 
as 
begin 
begin try 
begin transaction innerTrans 
save transaction savepoint --创建事务保存点 
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 


事务嵌套,回滚外层事务时,如果嵌套内的事务已经回滚过则会有异常。此时需要使用事务保存点。如上代码。

延伸 · 阅读

精彩推荐