【发布时间】:2018-09-23 15:23:15
【问题描述】:
我正在为我的项目使用 Oracle JPA。在我的项目中,我们接收文件并将记录插入或更新(如果修改了任何字段值)到数据库表中。 有可能在没有修改字段值的情况下收到重复的(已收到的)记录。
我的需要是
- 如果收到的相同记录没有任何更改,则不应更新日期列。
- 如果新记录或相同记录有任何修改,日期列应更新。
举个例子
第一次插入:
要插入的记录:
EmpID | Name | Designation | Salary
=========================================
00001 | Raj | Team Lead |600000
00002 | Kumar | Developer |400000
插入后的表格:
Emp ID | Name | Designation | Salary | DATE
===========================================================
00001 | Raj | Team Lead | 600000 | 12-04-2018 01:00:00
00002 | Kumar | Developer | 400000 | 12-04-2018 01:00:00
第二次插入:
要插入的记录:
EmpID | Name | Designation | Salary
==============================================
00001 | Raj | Team Lead |600000
00002 | Kumar | Senior Developer |500000
插入/更新后的表格:
Emp ID | Name | Designation | Salary | DATE
===========================================================
00001 | Raj | Team Lead | 600000 | 12-04-2018 01:00:00
00002 | Kumar | Senior Developer | 500000 | 13-04-2018 01:00:00
这里只发送更改的行日期,因为它只是真正修改过的。
在代码中执行此验证是一项繁琐的任务。请说是否有任何可能的解决方案。
【问题讨论】:
-
我会计算数据的哈希值并检查它是否与在更新前触发器中对表数据计算的相同哈希值不同,如果是,则更新,否则跳过