SQL2000中的事务?应该是简单!(100分)

  • 主题发起人 主题发起人 fwd
  • 开始时间 开始时间
F

fwd

Unregistered / Unconfirmed
GUEST, unregistred user!
在SQL2000编写一个存储过程.<br>我在DELPHI中或者查询分析器中运行,如遇数据约束外键或其他错误时,此过程会中断执行.<br>我想要求它遇到错误时,回滚到执行初始状态.请大伙帮忙?<br>我想到用事务,不知如何使用?
 
BEGIN TRAN <br>COMMIT<br>ERROR&lt;&gt;0<br>ROLLBACK
 
ERROR&lt;&gt;0语法不对<br>CREATE PROCEDURE [aa] AS<br>BEGIN<br>&nbsp; INSERT a VALUES(1) &nbsp;//这句会被执行<br>&nbsp; INSERT a VALUES(2) &nbsp; //外键错误.<br>END<br><br>帮我修改上一过程,在其错误时,回滚全部.<br><br>谢谢
 
begin tran<br>CREATE PROCEDURE [aa] AS<br>BEGIN<br>&nbsp; INSERT a VALUES(1) &nbsp;//这句会被执行<br>&nbsp; INSERT a VALUES(2) &nbsp; //外键错误.<br>END<br>if @@error&lt;&gt;0 <br>&nbsp; ROLLBACK TRAN
 
Post &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>try<br>&nbsp; StartTransaction &nbsp; <br>&nbsp; ApplyUpdates &nbsp; &nbsp; &nbsp; &nbsp;<br>&nbsp; CommitUpdates &nbsp; &nbsp; <br>&nbsp; session.Commit &nbsp; &nbsp;<br>except<br>&nbsp; session.Rollback &nbsp; &nbsp;<br>end;
 
CREATE PROCEDURE [aa] AS<br>BEGIN<br>&nbsp; begin tran<br>&nbsp; INSERT a VALUES(1) &nbsp;//这句会被执行<br>&nbsp; INSERT a VALUES(2) &nbsp; //外键错误.<br>&nbsp; if @@error&lt;&gt;0 <br>&nbsp; &nbsp; &nbsp;ROLLBACK TRAN &nbsp;<br>END<br>是不是应该这样?
 
To Godfear:<br>是不是在SQL语句中实现更好些.<br>另外:我用的ADO. &nbsp; session是不是BDE中的.
 
[red]用@ERROR判断是不是麻烦了点?[/red]<br>@@ERROR 返回此错误信息代码,直到另一条 Transact-SQL 语句被执行。您可以在 sysmessages 系统表中查看与 @@ERROR 错误代码相关的文本信息。<br><br>由于 @@ERROR 在每一条语句执行后被清除并且重置,应在语句验证后立即检查它,或将其保存到一个局部变量中以备事后查看。
 
后退
顶部