java数据留痕怎么做关联_数据修改时如何留痕

【摘要】

在食品生产安全中现在提倡产地的可追溯性,同样在数据安全方面同样有相应的要求,要记录什么人对哪些数据做了修改操作,这样就要求业务人员录入、修改数据时能够将该人员信息一同保存下来,方便数据的可追溯,点击

数据填报修改时如何增加操作人员信息

查看具体方法

需求描述:

用户在页面端修改数据时为保证数据的可追溯性,可以在数据表中增加修改人字段,用于保存修改人的信息,追溯数据的有效性。下面就介绍一下如何实现这个需求。

解决方案

一:填报表制作

按照用户的需求制作填报表,如“订单信息表”:

1、 新建填报表,新增参数:userid,用于接收系统传进来的用户信息。

2、 在“数据处理”对话框中把“数据来源”设置为使用“脚本”方式,如图:

f467ef049fa6ae0a867bbae360895185.png

3、 在“数据处理”对话框中把“数据去向”也设置为使用“脚本”,如图:

e3f6153133176fe63fea24b173eb6248.png

注意:B2 中 EDITUSER 字段为数据库中的修改人字段,将其赋值为 userid,表示更新时将参数 userid 的值保存到对应字段中。

4、 制作填报表,如下图:

07a43087b585c5e886e72ff3150fb8ec.png

A3 设置单元格类型为维度格,表达式为 =dd.(DDID),dd 为数据来源中定义的数据对象名称,此单元格取表中 DDID 的值,字段名称中设置 dd.DDID。

B3~E3 单元格类型设置成数值格,用于填写信息,按照填报表取字段名称规则,B3 单元格默认取其上方单元格为字段名称,由于数据库中存储的是英文字段名“KHID”,和 B2 中的“客户编号”不一致,所以为取出正确数据,在 B3 单元格的字段名称中设置“KHID”,指定单元格字段名称,其余类似。

按照客户样式要求调整报表样式,并保存报表即可。

5、 发布报表并设置参数传递

在浏览器中访问该报表,并且在 url 中将用户编号传递给参数 userid,如:

参数可以在 url 中传递,为保证其安全性,用户信息可能存在 session 中,那么在 showInput.jsp 中获取 session 中的用户信息,并传递给报表标签的 params 标签即可,传递格式:参数名称 = 参数值。

报表展现后,格式如下:

93cbe58839d4de2b91ebe3ac07cef45a.png

页面端修改数据保存后,去数据库端查看数据发现,EDITUSER 字段数据为传入的用户信息,如下图:

762f8aef1bf7928b6f48b8682a9bd5d5.png

发现问题

实际使用中发现,用户可能只修改了某几条记录,但是数据库中的 EDITUSER 字段的所有数据都会发生变化,而用户需求肯定是只更改该用户修改的数据。

问题原因及解决办法:

前面更新数据采用的是集算脚本中的 update 函数,该函数处理时会根据新旧对象数据进行判断,从而判定处理时是 update、insert 还是 delete 操作。因此解决办法就是在新旧对象中删除没有修改的数据即可,下面是更改后的数据去向脚本:

91ce6a1a0dfa18533fab2dc2e5e601ac.png

B1 中通过 join 函数将两个对象关联在一起,此时关联字段是对象中的所有字段,这样可以找到没有修改的数据。

C1 中取出两个对象中所有数据相同 (没有修改的) 的主键字段

A2、B2 中分别从两个对象中根据 C1 的值过滤出没有修改的数据

A3、B3 删除没有修改的数据,这样两个对象中的数据均为用户页面端修改后的数据,再执行 update 操作即可。数据库中数据如下:

0d6dd39be4aac9fe399b0eaf347f565a.png

可见,只有页面端修改的数据 EDITUSER 字段的值会发生变化,其余不变,这样就可以定位到具体哪些数据被哪些人做了修改。

总结:

本例中通过在脚本中对填报对象的数据进行修改,做到了在相应数据表中更新最后修改人字段,并且能精确到他修改的数据。实际应用中也可以增加最后修改时间等,或者在脚本中做更复杂的业务处理。

详情链接:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值