关于数据记录的操作日志

来源:互联网 发布:阿里巴巴java架构师 编辑:程序博客网 时间:2024/05/21 10:03

最近做个项目要求挺多的,其中一条就是记录关于数据记录的操作日志,而且日志要可以分析的.

于是乎我开始分析这个需求:

1、以前我做的其它项目大多只要细化到谁改了,什么时间改的.就差不多了.可是这次那帮家伙哦要求的可以分析数据的来龙去脉,也就是说要记录这条数据是谁,什么时间,内容,建立的。还有谁什么时间改的,改了什么内容。谁什么时间删除了这条记录。

 

2、从上面我理清了要做的三件事:1、建立时写日志2、每次修改写日志3、删除时写日志

 

3、于是乎我要考虑日志表和实体表之间的关系,每个实体表对应一个日志表.

日志表中多三个字段XGR--修改人  XGSJ--修改时间 XGLX--修改类型(可以是“INSERT、UPDATE、DELETE”),而且BH也不可以做标识的(实体表里的BH要做标识).

 

4、实现这三件事的Sql.数据表的结构如下

 

 

 

对应数据源配置的Sql语句:

Select :

Select * from SCD_SGRYYFB

 

Update :

Insert into SCD_SGRYYFB_XGJL([ZAH], [RQ], [RS], [BH], [BS],RYFL,XGR,XGSJ,XGLX)
values(@ZAH,@RQ,@RS,@BH,@BS,@RYFL,@XGR,getDate(),'UPDATE')
Update [SCD_SGRYYFB]  set [ZAH]=@ZAH,RQ=@RQ,RS=@RS,BS=@BS,RYFL=@RYFL where BH=@BH

 

INSERT:

Insert into SCD_SGRYYFB([ZAH], [RQ], [RS], [BS],RYFL)
values(@ZAH,@RQ,@RS,1,@RYFL)
declare @@varBH int
select @@varBH=@@identity
Insert into SCD_SGRYYFB_XGJL([ZAH], [RQ], [RS], [BH], [BS],RYFL,XGR,XGSJ,XGLX)
values(@ZAH,@RQ,@RS,@@varBH ,1,@RYFL,@XGR,getDate(),'INSERT')

 

DELETE :

Insert into SCD_SGRYYFB_XGJL([ZAH], [RQ], [RS], [BH], [BS],RYFL,XGR,XGSJ,XGLX)
values(@ZAH,@RQ,@RS,@BH ,@BS,RYFL,@XGR,getDate(),'DELETE')
Delete from SCD_SGRYYFB where BH=@BH

 

@XGR赋值:

 protected void SqlDataSource1_Inserting(object sender, SqlDataSourceCommandEventArgs e)
    {

          e.Command.Parameters["@XGR"].Value = User.Identity.Name;//这句要自己客户化的,要求取当前系统登陆用户的ID

}

protected void SqlDataSource1_Deleting(object sender, SqlDataSourceCommandEventArgs e)
    {

          e.Command.Parameters["@XGR"].Value = User.Identity.Name;//这句要自己客户化的,要求取当前系统登陆用户的ID

}

protected void SqlDataSource1_Updating(object sender, SqlDataSourceCommandEventArgs e)
    {

          e.Command.Parameters["@XGR"].Value = User.Identity.Name;//这句要自己客户化的,要求取当前系统登陆用户的ID

}