在c/s或多层中,如果两个用户同时打开一条记录,修改后提交会产生更新冲突;
据说办法有二:1。打开同时锁定表的记录 2。浦获错误,撤消其中一个用户的修改,但是很少见到具体实现的代码;请大家告诉具体的代码怎么写:
1。打开时如何锁定一条记录?
2。如何扑获更新错误?在delphi中调试时会报“该记录读出后已经被再次修改”,而在运行时如何判定错误为更新冲突?因为更新时其他的错误如输入不合法等也可能报错,如何把更新冲突和其他的分开?
  
 请热心的朋友给比较周详的答案,因为受这问题困扰的可能不只是我一个人,大家都可以参考一下;分有点少,我只有这些了,请多关照!

解决方案 »

  1.   

    select * from customers with (tablockX)。
      

  2.   

    锁定记录可用你打开记录的那个对象的锁定类型这个属性,然后把update语句包含在BeginTrans和CommitTrans之间,如果出现错误就RollbackTrans
    MSN: [email protected]
      

  3.   

    采用数据库的事务机制来防止不同用户产生相同标识,和银行取钱的是一个道理
    Database1.StrartTransaction;tryClientDataSet1.ApplyUpdates(0); //这句成功ClientDataSet2.ApplyUpdates(1); //这句出错Database1.Commit;exceptDatabase1.Rollback;end;
      

  4.   

    再等待一下吧,
    除了就事论事谈这个问题,大家还有没有别的好的办法,防止更新问题?
    另外,access等是不支持事务的,那么有些方法就无法应用了。
    请经常做数据库开发方面的朋友谈谈处理这方面的问题的经验!