有关sql server 2000 的事务处理问题

huxiqiao 2003-12-02 11:24:15
本人刚开始学sql server 2000,请问各位大哥下面的代码有何错误:
begin tran
update table1 set abc=2
insert into table2 values (1)
commit tran

其中:table1,table2中都只有一个字段,table2的字段不能有重复值,目前已经有一个值为1在table2中。也就是说第二条insert语句应该是执行不成功的!

按照事务的概念,应该是两条语句都不会被执行,因为第二条不成功。可是为何得出的结果却是第一条语句被执行了,第二条报错!这是为什么呀?
...全文
58 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovehwq21 2003-12-02
  • 打赏
  • 举报
回复
楼上说得是,rollback tran就是事务回滚,一般使用事务都需要这个,这个的作用就是:当SQ
L语句不通或者是一些条件不成立,则回滚,不执行SQL,如果用提交commit tran,则执行SQL,所以你要加个rollback tran,或者加判断
yardyg 2003-12-02
  • 打赏
  • 举报
回复
table2表如果还有其它字段请如是写:
1、insert into table2(字段1) values(1)

无论两条语句对与错你都commit了,当然对于那个正确的update 语句就修改成功了

应该是如果发现错误就rollback如是写

declare @e int
select @e=0
begin tran t1
begin
update table1 set abc=2
insert into table2 values (1)
select @e=@e+@@error
end
if (@e=0)
commit tran t1
else
rollback tran t1

huxiqiao 2003-12-02
  • 打赏
  • 举报
回复
顶!
huxiqiao 2003-12-02
  • 打赏
  • 举报
回复
再请问楼上的大哥,如果这段要在ASP中使用该如何写呢?
我用的是ASP+ADO方式来访问sql server 2000 数据库的!
huxiqiao 2003-12-02
  • 打赏
  • 举报
回复
谢谢谢谢!

28,407

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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