《高性能的数据库》 第四讲 编程细节(2)
作者 佚名技术
来源 数据库编程
浏览
发布时间 2012-03-20
p_ExecuteSQL (这是我最痛苦的事情了,痛哭中……) chair3. 不可以调用扩展存储过程 chair4. 不可以调用Update语句对表进行更新 chair5. 不可以在函数内部创建表(Create TAble ),修改表(Alter TAble) 等等……头脑发昏中……反正稍微一些不可预测后果,无法返回后果的都不能用。 5.事务 什么叫事务? 这些就是数据库特有的术语了。懒虫在这里口头解释:就是把多件事情当做一件事情来处理。也就是大家同在一条船上,要活一起活,要over一起over ! 我为什么要使用事务? 俺这里再举个很俗很俗的例子: 俺到银行存钱,于是有这么几个步骤: 1、把钱交给工作人员;2、工作人员填单;3、将单子给我签字;4、工作人员确认并输入电脑。 要是,要是我把钱交给工作人员之后,进行到3我签字了。那哥们突然心脏病发作,over掉了,那,我的钱还没有输入电脑,但我却交了钱又签字确认了,而并没有其他任何记录。我岂不是要亏死了???我的血汗钱啊!赶紧退给我!! 于是,在数据库里产生了这么一个术语:事务(Transaction),也就是要么成功,要么失败,并恢复原状。 还是写程序把: Create Proc sp我去存款(@M Money , @iOperator Int) As Begin Declare @i int Begin Tran --激活事务 Exec @i=sp交钱 @m,@iOperator if @i<>0 --这里一般用系统错误号 @@Error。 我这里为了举例子没有用到。需要根据实际情况。 begin Rollback Tran --回滚事务 RaisError (''银行的窗口太少了,我懒得排队,不交了!:( '', 16, 1) with Log --记录日志 Return -1 --返回错误号 end Exec @i=sp填单 @m,@iOperator if @i<>0 begin Rollback Tran --回滚事务 RaisError (''银行的哥们打印机出了点毛病,打印不出单子来,把钱退回来给我吧??'', 16, 1) with Log Return -2 end Exec @i=sp签字 @m if @i<>0 begin Rollback Tran --回滚事务 RaisError (''我 靠?什么烂银行,换了3支笔都写不出水来!!老子不存了!!不签!'', 16, 1) with Log Return -3 end Exec @i=sp输入电脑 @m,@iOperator if @i<>0 begin Rollback Tran --回滚事务 RaisError (''什么意思?磁盘空间已满?好了好了,把钱给我,我到旁边的这家银行!'', 16, 1) with Log Return -4 end Commit Tran --提交事务 Return 0 End ---------------------------------------------------------------------- 以上是伪代码,模拟我去存款的过程。 --懒虫 # SapphireStudio 精彩世界,尽在3腿软件网(www.chair3.com)!! ---------------------------------------------------- |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: SQLServer数据库技术(09)下一篇: SQLServer数据库技术(11)
关于《高性能的数据库》 第四讲 编程细节(2)的所有评论