带你深入了解T-SQL的十一种设计模式
2008-09-04 10:00:41 来源:WEB开发网六、Restorer(恢复)
此模式提供一种在出错时清理资源的机制。为避免孤立一个事务,当事务活动时,适当地处理出错条件极其重要。
1、出错时回滚事务
IF OBJECT_ID(’procR’) IS NOT NULL
drop PROC procR
GO
create PROC procR
AS
DECLARE @err int
BEGIN TRAN
update customers SET city = ’Dallas’
select 1/0 --设置一个错误
SET @err = @@ERROR
IF @err <> 0
BEGIN
ROLLBACK TRAN
RETURN (@err)
END
COMMIT TRAN
GO
DECLARE @res int
exec @res = procR
select @res
注:此模式的关键部分是将错误码@@error缓存至变量@err中,如果不缓存@@error,下一执行成功的语句将重置@@error,缓存它后,如出现错误,将检查@errr的值并回滚该活动事务。
2、出错时清除临时表
create PROC procR
AS
DECLARE @err int
create TABLE ##myglobal(c1 int)
insert ##myglobal DEFAULT VALUES
select 1/0 --设置一个错误
SET @err = @@ERROR
IF @err <> 0
BEGIN
drop TABLE ##myglobal
RETURN (@err)
END
drop TABLE ##myglobal
GO
DECLARE @res int
exec @res = procR
select @res
3、主动执行恢复模式
create PROC procR
AS
IF @@TRANcount <> 0 --启动新事务前先回滚旧事务
ROLLBACK TRAN
DECLARE @err int
BEGIN TRAN
update customers SET city = ’Dallas’
select 1/0 --设置一个错误
SET @err = @@ERROR
IF @err <> 0
BEGIN
ROLLBACK TRAN
RETURN (@err)
END
COMMIT TRAN
GO
DECLARE @res int
exec @res = procR
select @res
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接