DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: a1871584487
今日帖子: 9
在线用户: 8
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 ranreifen (ranreifen) ★☆☆☆☆ -
普通会员
2003/11/18 21:04:28
标题:
请教关于数据一致性问题? 浏览:1677
加入我的收藏
楼主: 在进行网络数据库系统设计时,能不能完全控制数据的一致性?如我在做销售出库时要减库存,有200条记录,而在减到100条左右计算机断电了怎么办?下一次如果再减,则前一半物品会多减,如果不再减,则后面的物品就少减!这类问题该怎么解决,请各位指教!!
----------------------------------------------
-
作者:
男 yanghubin (yanghubin) ★☆☆☆☆ -
普通会员
2003/11/18 21:49:28
1楼: 最简单是用ups呵呵哈
----------------------------------------------
bluefire
作者:
男 bryan (bao) ★☆☆☆☆ -
盒子活跃会员
2003/11/19 19:58:45
2楼: 启动数据库的交易处理就可以了,当然您用的数据库要支持交易才行.
----------------------------------------------
-
作者:
男 ranreifen (ranreifen) ★☆☆☆☆ -
普通会员
2003/11/21 18:52:38
3楼: bryan ,交易处理是什么呀???我是刚学的,sql支持交易吗??
----------------------------------------------
-
作者:
男 bryan (bao) ★☆☆☆☆ -
盒子活跃会员
2003/11/21 19:33:17
4楼:    Sql Server支持交易, 交易处理可以将你的数据处理做为一个整体,
从启动交易开始,你对数据库的修改都被锁定,在未提交交易前这些修改
过的数据都可以理解为暂时的,一旦出现异常(包括断电),交易可以回滚,使
数据恢复到开始交易前的状态. 如果交易完成就既成事实,无法回滚了.
  SQL Server中的交易是这样写的:
     begin tran  --启动交易
        Update table1 set field1='XXXX' where .... 
        Update table2 set field2='XXXX' where .... 
     if @@Error<>0 Begin
        Rollback tran --回滚交易
        raise ....
        return
     End
     Else Begin
        Commit tran  --完成交易
     End 

 Delphi 中的语法不太一样,看你用什么连接
    BDE: 
      Bdedatabase1.StartTransaction;
      try
         更新语句1... 
         更新语句2... 
         更新语句3... 
         Bdedatabase1.Commit;
      except
         Bdedatabase1.Rollback;
         raise exception.Create('error');
      end;
   
    ADO对应的三个方法如下:
      ADOConnection1.BeginTrans
      ADOConnection1.CommitTrans
      ADOConnection1.RollbackTrans

----------------------------------------------
-
作者:
男 cjrb (Thinking In 魂) ★☆☆☆☆ -
盒子活跃会员
2003/11/21 19:35:20
4楼: 差不多这样子:
ado:
adoconnection1.BeginTrans ;
try
  {todo something}
except{出错}
  adoconnection1.RollbackTrans  ;
end;
adoconnection1.CommitTrans  ;
bde:
database1.StartTransaction;
try
  {todo something}
except{出错}
  database1.Rollback;
end;
database1.Commit;

----------------------------------------------
按此在新窗口浏览图片 充电..........
作者:
男 cwh_weihuang (cwh_weihuang) ★☆☆☆☆ -
盒子活跃会员
2003/11/22 15:03:49
5楼: 呵呵,同意cjrb的做法,这是DELPHI的事务处理!
----------------------------------------------
按此在新窗口浏览图片
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行93.75毫秒 RSS