如果记录数据库表修改记录

如果记录数据库表修改记录 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiDB/html/delphi_20061222142245163.html
我想记录每个用户对每个表的修改都能记录到一个系统表里,请问应该如何实现呢?  
  最好可以记录到字段级的修改,对每次修改都记录初值及修改后的值。  
   
  我朋友说可以用触发器,但我感觉也不太对,因为触发器并不知道当前操作的用户,我还要记录当前修改是哪个用户  
   
  请兄弟们帮我看一下。谢谢啦。

你可以考虑在表中增加一个字段表示记录的当前状态;例如0表示正常可用;1表示被修改过,2表示被删除;另加一个字段表示操作人员;  
  这样在对表进行更新时不实际操作原记录,而是修改状态字段的值;而同时在表中新增一条记录

当然,新增的记录状态值为0;

db控件post   之前有oldvalue   和newvalue,你可以试试

比如那个的是。我为了简化事务处理把提交事务写在了一个函数里。  
  function   TdmClient.commitUpdate(ADOCon:TADOConnection;DataSet:TCustomADODataSet):   Integer;  
      var   DataSetOld,DataSetNew:TCustomADODataSet;  
  begin  
      Result   :=   1;  
      try  
          DataSet.Connection   :=   nil;  
          ADOCon.Close;  
          ADOCon.Open;  
          DataSet.Connection   :=   adocon;  
          ADOCon.BeginTrans;  
          DataSet.UpdateBatch;  
          ADOCon.CommitTrans;  
      except  
          ADOCon.RollbackTrans;  
          Result   :=   0;  
      end;  
  end;  
  我还有一个想法就是在调用这个函数里,把旧的数据集从数据库中取出来然后进行更新,  
  然后把两个DataSet进行比较,检查出修改和删除或新增的记录,期待楼下朋友的帮助。

转载于:https://www.cnblogs.com/delphi2007/archive/2008/12/11/1352489.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值