==高手请进:关于事务处理???==== 对于这个例子可能用一个事务就可以了,但假如不是删除,而是对Qry2所在的库中的另一个表做一些更新操作,没有两个事务行吗???我原来也知道事务不能嵌套但总是认为是对于同一个库的,看来不是!!!现在也不知怎么搞的,在家里的机器上打开帖子,总出错,忽略错误,导致有些字不可见,怪事??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 to cszk4(),Qry1和Qry2不在同一个库中??to aaa5028() ,不会吧!! DataBase1.startTransaction; Try //Qry2-> Qry1 ... //删除Qry2中的有关记录 .... Excapt on exception do Begin DataBase1.RollBack; Exit; End; End; DataBase1.Commit; to genphone_ru,但假如实际上,Qry2对应有两个表,MyTable1,MyTable2,所以Qry2->Qry1的操作实际上是将MyTable1,MyTable2的字段内容复制到Qry1,删除Qry2内容时实际上是先删Mytable1,再删Mytable2,但在删除Mytable2中记录时,恰好因为网络断线,导致删除失败,此时Mytable1中删除的内容实际上是不能恢复的,因为MyTable1,MyTable2在Database2中而不是在Database1中(Qry1在Database1中)!!!to hmily1688,只能用触发器了吗?? to genphone_ru,问题是:实际上Qry2是两个表,MyTable1,MyTable2,在分别删除时,且在删除后一个表的记录时出错,将引起第一个表中的记录丢失,因为MyTable1,MyTable2和Qry1不在一个库中!!???to hmily1688,只能用触发器吗??? 一个事务也可以啊,对多个库又怎样。不过你这个好像不行。你用的不是一个数据库连接吧。用 databasename.dbo.tablename 。来使用令一个数据库的表,用一个连接吧,就可以用一个事务了。不过谁说的事务不能嵌套的,你在Sqlserver里试一试,用@@trancount看看,事务计数可以大于1的。不过客户端我就没有这样干过了。begin tran select @@Trancountbegin tran select @@Trancountcommit tran select @@Trancountcommit tran select @@Trancount to lyxinfo(),没有搞懂,怎么用一个连接?? 呵呵,不要告诉我连一个服务器都不是,那就是分布式的事务了。如果是一个服务器,如果是用BDE,就用TDatabese,Ado就用TAdoConnection,写Sql的时候,比如你登陆数据库A,另一个数据库是B,需要B中的表就用B.dbo.表名;当然,你需要要有相应的权限。 哦,还有怎么用的啊,感谢lyxinfo(),那应该用Ms desktop Sql也没有问题吧!那要是两个库在不同服务器上,如何处理啊!??? desktop一样的。同时更新两个服务器,我也没有用过,那其实可以象你那样用两事务,应该不会因此出错的吧,等于是客户端来处理了,这样也许不太好。可以用分布式事务?我没有作过,呵呵,多顶顶!希望高手帮忙吧。 国庆散分 Delphi中DBGridEh合并行 为什么这么做?修改注册表使软件随Windows一起启动? CheckBox组件如何实现多条件查询, 求按钮控件。。 fastreport菜鸟问题,欢迎进来领分 怎么将showmessage和messagedlg中的按钮和标题变成中文阿? 大多数能玩得起的新潮设计产品 调用OleInitialize(nil);OleUninitialize;时编译器不认识。咋办! 怎样用delphi对access中的表进行模糊查询 如何转到别的控件上? 谁会写学校的自动排课系统?
Qry1和Qry2不在同一个库中??to aaa5028() ,
不会吧!!
Try
//Qry2-> Qry1
...
//删除Qry2中的有关记录
....
Excapt
on exception do
Begin
DataBase1.RollBack;
Exit;
End;
End;
DataBase1.Commit;
但假如实际上,Qry2对应有两个表,MyTable1,MyTable2,所以Qry2->Qry1的操作实际上是将MyTable1,MyTable2的字段内容复制到Qry1,删除Qry2内容时实际上是先删Mytable1,再删Mytable2,但在删除Mytable2中记录时,恰好因为网络断线,导致删除失败,此时Mytable1中删除的内容实际上是不能恢复的,因为
MyTable1,MyTable2在Database2中而不是在Database1中(Qry1在Database1中)!!!to hmily1688,
只能用触发器了吗??
问题是:实际上Qry2是两个表,MyTable1,MyTable2,在分别删除时,且在删除后一个表的记录时出错,将引起第一个表中的记录丢失,因为MyTable1,MyTable2和Qry1不在一个库中!!???to hmily1688,
只能用触发器吗???
不过谁说的事务不能嵌套的,你在Sqlserver里试一试,用@@trancount看看,事务计数可以大于1的。不过客户端我就没有这样干过了。
begin tran
select @@Trancount
begin tran
select @@Trancount
commit tran
select @@Trancount
commit tran
select @@Trancount
没有搞懂,怎么用一个连接??
同时更新两个服务器,我也没有用过,那其实可以象你那样用两事务,应该不会因此出错的吧,等于是客户端来处理了,这样也许不太好。
可以用分布式事务?我没有作过,呵呵,多顶顶!希望高手帮忙吧。