日期:2014-05-17  浏览次数:20407 次

怎么控制事务处理?
现在用三层模式做个网络的erp系统。因为网络很差,经常是一个功能里面,前一个sql语句执行完,后一个就死了没动。

比如有个功能,需要先完成第一步数据库操作,取出第一步得到的值,来更改第二步,然后在根据第二步的值,来执行第三步,等等,还包括递归更改等操作。很复杂。
在程序里,是一个接一个procedure写下来的。每个procedure都会通过第二层,到第一层去操作数据库。

理论上讲,应该是最后一个procedure处理成功,才能commit全部事务。
但是一个procedure完成后,事务就失效了。该怎么办?

曾经想过写个复杂的sql语句,来一次性完成数据库操作。但是没有成功。

不知道有没有好方法。

------解决方案--------------------
在存储过程里用事务
或者你代码用事务,
都可以的
------解决方案--------------------
用同一个connection

------解决方案--------------------
.net用
lock(xx)
{
}
sql 用
begin transaction;
....
commit transaction;

不过希望LZ多能用点应用服务缓存来存储信息
------解决方案--------------------
表示没有好方法。还是想办法在存储过程里写。程序里控制的话,要考虑并发。
------解决方案--------------------
写在同一个连接里面
把 开关数据库什么的封装起来