在存储过程中编写正确的事务处理代码(SQL_Server_2000

上传人:dao****ing 文档编号:59536309 上传时间:2022-03-03 格式:DOC 页数:5 大小:37.50KB
收藏 版权申诉 举报 下载
在存储过程中编写正确的事务处理代码(SQL_Server_2000_第1页
第1页 / 共5页
在存储过程中编写正确的事务处理代码(SQL_Server_2000_第2页
第2页 / 共5页
在存储过程中编写正确的事务处理代码(SQL_Server_2000_第3页
第3页 / 共5页
资源描述:

《在存储过程中编写正确的事务处理代码(SQL_Server_2000》由会员分享,可在线阅读,更多相关《在存储过程中编写正确的事务处理代码(SQL_Server_2000(5页珍藏版)》请在装配图网上搜索。

1、在 SQL Server 中数据库事务处理是个重要的概念,也稍微有些不容易理解,很多 SQL 初学者编写的事务处理代码存往往存在漏洞,本文介绍了三种不同的方法,举例说明了如何在存储过程事务处理中编写正确的代码。在编写 SQL Server 事务相关的存储过程代码时,经常看到下面这样的写法: begin tran update statement 1 . update statement 2 . delete statement 3 . commit tran这样编写的SQL存在很大隐患。请看下面的例子: create table demo(id int not null) go begin t

2、ran insert into demo values (null) insert into demo values (2) commit tran go执行时会出现一个违反 not null 约束的错误信息,但随后又提示(1 row(s) affected)。 我们执行 select * from demo 后发现 insert into demo values(2) 却执行成功了。 这是什么原因呢? 原来 sql server 在发生 runtime 错误时,默认会 rollback 引起错误的语句,而继续执行后续语句。 如何避免这样的问题呢?有三种方法:1. 在事务语句最前面加上set

3、xact_abort on set xact_abort on begin tran update statement 1 . update statement 2 . delete statement 3 . commit tran go当 xact_abort 选项为 on 时,sql server 在遇到错误时会终止执行并 rollback 整个事务。2. 在每个单独的DML语句执行后,立即判断执行状态,并做相应处理。 begin tran update statement 1 . if error 0 begin rollback tran goto labend end delete

4、 statement 2 . if error 0 begin rollback tran goto labend end commit tran labend: go3. 在SQL Server 2005中,可利用 try.catch 异常处理机制 begin tran begin try update statement 1 . delete statement 2 . end try begin catch if trancount 0 rollback tran end catch if trancount 0 commit tran go下面是个简单的存储过程,演示事务处理过程。 create procedure dbo.pr_tran_inproc as begin set nocount on begin tran update statement 1 . if error 0 begin rollback tran return -1 end delete statement 2 . if error 0 begin rollback tran return -1 end commit tran return 0 end go

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!