遇到难题了,与事务有关的问题,是不是高手都进来看一下,帮帮小弟

lovewindy 2004-06-10 09:21:30
最近在做项目的时候遇到一个问题
我有N条SQL语句(都是修改或删除之类会影响到数据库的语句)
但发现如果这些语句刚好运行到一半的时候遇到意外事件(如停电或软件被关闭),则数据库就会出错,不知道有没什么方法可以将这N条语句打包成一个整体,要么会做,要么会不做。
不知道这是不是属于事务问题,
但我试了用事务,但是事务只对运行到中途发生SQL语句出错才有作用,如果语句正常,只是中途跳转了,好像也没什么效果,
可能是我事务用错了,也希望高手指教我在ASP中如何用事务,

我也问过好多人,都说要用事务,他们说

//事务开始
//数据库修改
//if (正确)
CommitTrans
else
Rollback
但是如果我的问题是刚好运行到//数据库修改这N条修改语句中的某一条时,突然断电,或软件被关闭,那下面的语句就不会再去运行了呀,那怎么去判断啊,


希望高手指教啊,先谢谢了。,
...全文
148 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
shenqhy 2004-06-15
  • 打赏
  • 举报
回复
就是这样
baseyueliang 2004-06-15
  • 打赏
  • 举报
回复
的确如此
cloudchen 2004-06-10
  • 打赏
  • 举报
回复
SET XACT_ABORT ON
begin tran
'sql1
'sql2
commit tran

断电等会在下一次启动是自动进行回滚事物
pjy 2004-06-10
  • 打赏
  • 举报
回复
对,你不用担心,在下次起动的时候,数据库系统会根据日志中事务执行情况回滚你所做的处理!
不过,正确的写法应该是
Begin Transaction
--数据修改语句1
if @li_rtn<>0
begin
rollback transaction
return
end
--数据修改语句2
if @li_rtn<>0
begin
rollback transaction
return
end
...
commit transaction
yl_yz 2004-06-10
  • 打赏
  • 举报
回复
你这样试试:
每条SQL语句后判断@@error是否为0,是则执行下一条sql语句,依此类推,至最后一条执行成功Commit,否则 Rollback
tomhuang 2004-06-10
  • 打赏
  • 举报
回复
在数据库中会保留一个事物,下次启动数据库时会自动回滚。
fornothing 2004-06-10
  • 打赏
  • 举报
回复
事务的定义就是这样 只要是在事务中 就不用担心断电 系统会自动回滚的

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧