关于事务处理的问题 (35分)

  • 主题发起人 主题发起人 烂泥
  • 开始时间 开始时间

烂泥

Unregistered / Unconfirmed
GUEST, unregistred user!
有如下程序:
(**) if database1.InTransaction then
database1.rollback;

frmd.database1.StartTransaction ;

try
database1.StartTransaction;
(*) 。。。
database1.commit;
except
database1.rollback;
end;


如果甲的程序运行到*处,乙运行同样的程序到(**)
会有什么情况出现
也就是多机运行时 database1.InTransaction 的返回结果是什么样的
 
这应只取决于乙程序是否已开始事务处理吧.
 
如果甲的程序运行到*处,乙运行同样的程序到(**)会执行**下面一句吗?
 
应该会
这和数据库的类别有关
不过大多数情况在*处数据库会锁表
乙会在甲结束transaction后才能提交
用SP_LOCK......
 
DataBase控件好像不是线程安全的,别那么作。
如果你说的是两个进程,那么两者不会互相干扰的。
 
InTransaction应只是标识乙自己是否处于事务中吧,和其它机无关的。
 
agree crane.
不用担心不同进程的数据冲突。(这是数据库内部的事)
要担心就担心你自己的多线程把。(tsession)
 
多人接受答案了。
 
后退
顶部