我用的是dao连接access数据库!
CDBConnection::BeginTransaction();//开启事务处理
long delete_result = CDBConnection::ExecuteUpdate(str);//对表1进行delete操作
long update_result = CDBConnection::ExecuteUpdate(strquery);//对表2进行delete操作
if(delete_result != -1 )//对表1,delete成功
{
 if( update_result == 1 )//对表2,delete成功
   { CDBConnection::Commit();}//提示删除成功的消息
 else
   { CDBConnection::Rollback();}//对表2,失败,回滚,提示失败的消息
}
else
{CDBConnection::Rollback();}//对表1,失败,回滚,提示失败的消息我现在是两个用户同时删除,正确的结果应该是:
第一种情况: a: 删除成功了  b:提示已经被其他用户删除了 (正确的情况)
第二种情况: a: 删除成功了  b:提示已经被其他用户锁定了,不能删除 (正确的情况)
当我现在出现的还有一种错误的情况 a,b用户都删除成功了!
这种情况是不正确的,感觉好像事务处理没有锁定亚!但我以同样的思想来做update就只能出现上面两种正确的情况!
难道事务处理对delete操作没用?
请大家告诉我呀!
非常感谢!
                

解决方案 »

  1.   

    CDaoDatabase::Execute()中的参数是dbSeeChanges  //dbFailOnError   Roll back updates if an error occurs. 
    CDaoRecordset::Open()中的参数是dbOpenDynaset,SQL文,0
    是不是这两个参数有问题呀!
    要用事务处理应该怎么设置这两个参数亚!
      

  2.   

    你好像没有提交事务处理。
    如:
    CDaoDatabase db;
    db.BeginTrans();//开始事务
    ..................
    .................
    db.CommitTrans();//提交事务
    .......................
    db.Rollback(); //回滚事务