使用的是MySQLAccess控件,在数据插入异常后,都没发回滚掉,

zkc727 2007-09-09 10:43:30
使用的是MySQLAccess控件,在数据插入异常后,都没发回滚掉,
源码:
try
self.MyConnection1.StartTransaction;
self.MyQuery1.Close;
self.MyQuery1.SQL.Clear;
self.MyQuery1.SQL.Text :='insert tbl_hw_test2(test_name) value(''1'')';
self.MyQuery1.Execute;
self.MyQuery1.Close;
self.MyQuery1.SQL.Clear;
self.MyQuery1.SQL.Text :='insert tbl_hw_test(test_id) value(''1'')';
self.MyQuery1.Execute;
self.MyConnection1.Commit;
except
self.MyConnection1.Rollback;
end;
还有一点就是,我在插入数据库的时候,怎么判断插入的时候是成功或失败,这在Execute后有没有什么返回值?
...全文
67 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zkc727 2007-09-24
  • 打赏
  • 举报
回复
都没人光顾啊
zkc727 2007-09-10
  • 打赏
  • 举报
回复
版主,救命啊,怎么都没人回啊
zkc727 2007-09-10
  • 打赏
  • 举报
回复
怎么大家都没帮忙顶一下啊,
78hgdong 2007-09-09
  • 打赏
  • 举报
回复
在数据插入异常后,都没发回滚掉,
插入失败才回滚吧.
怎么判断插入的时候是成功或失败,
可以设置一个标志字段.插入成功后就查询该标志0或1..
zkc727 2007-09-09
  • 打赏
  • 举报
回复
这个在存储过程是可以这么写,到我是直接写在delphi中的,不知道是不是那个MyConnection控件没法实现这个功能,
请大家都都帮忙,怎么都没人来回啊
78hgdong 2007-09-09
  • 打赏
  • 举报
回复
事物本来就是一个插入不成功就回滚,不在执行后面的插入了.
参考一下:

declare @error int--定义一个变量来存储是否执行有错误
set @error = 0--将变量付值为 0
begin tran --开启事务
Insert TableA; -- 执行SQL语句1
set @error = @error + @@error --将全局变量@@error(返回最后执行的SQL 语句的错误代码。)加给@error
Insert TableB; --执行SQL语句2
set @error = @error + @@error --同上
If @error=0 then --判断@error是否为 0 (为0表示没有错误,>0则表示有错误)
commit tran;--如果没有错误那么执行事务
else
rollback tran; --否则回滚事务
end if
zkc727 2007-09-09
  • 打赏
  • 举报
回复
1,是要在两个表都成功的情况下,才能插入,要是有一个表失败,就要把两个表当前插入的值都回滚掉
2,在插入数据成功已否,应该有个返回值吧,不然要是设置这个标志字段也是麻烦

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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