关于数据记录的操作日志
2008-09-27 16:22
381 查看
最近做个项目要求挺多的,其中一条就是记录关于数据记录的操作日志,而且日志要可以分析的.
于是乎我开始分析这个需求:
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
}
于是乎我开始分析这个需求:
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
}
相关文章推荐
- Mysql之binlog日志说明及利用binlog日志恢复数据操作记录
- Mysql之binlog日志说明及利用binlog日志恢复数据操作记录
- 记录DATA数据修正操作日志(测试版)V1.0
- 数据库交易记录--如何添加审计信息到闪回归档数据以替换操作日志表
- Mysql之binlog日志说明及利用binlog日志恢复数据操作记录
- Mysql之binlog日志说明及利用binlog日志恢复数据操作记录
- Mysql7之binlog日志说明及利用binlog日志恢复数据操作记录
- MySQL 日志的启用与关闭,日志记录操作,方便恢复数据
- Mysql之binlog日志说明及利用binlog日志恢复数据操作记录
- Mysql之binlog日志说明及利用binlog日志恢复数据操作记录
- Mysql之binlog日志说明及利用binlog日志恢复数据操作记录
- Mysql之binlog日志说明及利用binlog日志恢复数据操作记录
- springmvc+log4j.xml操作日志记录,详细配置
- 追踪记录每笔业务操作数据改变的利器——SQLCDC
- 关于表单提交的数据记录
- redis命令及操作记录以及redis的五种数据类型介绍
- 分享自己的PHP操作记录日志代码
- Log4Net记录日志到数据库启动24小时后将无法向mysql数据库插入数据
- MySQL基本操作(六):建表,插入多条记录,更新表中特定数据
- 关于pgsql 的json 和jsonb 的数据查询操作笔记整理