在事务中如何将实际更新时间写到记录内去?? 本帖最后由 qmanzbxv 于 2014-04-25 19:42:44 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在同一个事务中,10:01的时候执行了更新语句,然后01--02做了其他操作,并在02分提交事务。问题是:你在01分的时候,怎么就知道这个事务会在02分结束且做了提交,而不是03分或者其他时间点?在commit的前面加一句update,只更新Ur_UpdateTime,这样做是否符合你的业务需求? 哈哈哈我看明白了 其实很简单的有俩种方法供参考时间拉链:10:00:00 的时候开始了一个数据事物为第一条 Ur_UpdateTime=10:00:00 start_date=10:00:00 end_date=虚拟的最大值 end_date=10:01:00 10:01:00 数据修改 时间为Ur_UpdateTime=10:01:00 start_date=10:00:0修改第一条数据的结束时间end_date=虚拟的最大值 end_date=10:02:00 10:02:00 数据修改 时间为Ur_UpdateTime=10:02:00 start_date=10:00:0修改第二条数据的结束时间end_date=虚拟的最大值 剩下的以此类推时间拉链较数据冗余较高,但是可以存数据变化历史,方法好实现第二中就是写触发器如果数据量不是过百万还是可以提倡的用用触发器获得新值:NEW.字段 insert 到一张临时表.临时表存的就是宿主文件发生变化的值. 对这个表UserInfo 写一个after update的触发器,更新这批数据时间,这样可以么?不过不太建议用触发器;或者建一个日志表,给每次更新加一个批次,日志表里记录时间 客户端做增量数据更新的时候会漏掉,这个是客户端的逻辑设计有问题吧。客户端非得设计成按照时间增量更新吗?可以参考oracle的数据块多版本设计思路,这样就能摆脱时间的限制,获取正确的增量更新数据。 这个时候Ur_UpdateTime的值为10:01:00。但是实际数据Commit的时间是10:02:00。这样导致客户端做增量数据更新时会漏掉(因为事务未提交而查不到)这个没有问题, 10:02:00 你还有可能 rollback 呢。 oracle 远程连接 在普通的PC机上,应该装哪个版本的ORACLE? 从10g升级到11g应该提醒客户注意什么? [help]怎么建个表,数据是update的数据 Oracle10g客户端,安装NET Configuration assistant失败。 oracle 安装的问题 急!!!!!!!!!!!! 请教:这个SQL语句如何写 在Oracle中,SQL语句是如何执行的? 高手进来瞧瞧,走过的路过的千万不要错过!!! 问个学习中很简单的问题,请帮忙啊~~~~~ oracle 数据处理 java调用存储过程
时间拉链:10:00:00 的时候开始了一个数据事物为第一条 Ur_UpdateTime=10:00:00 start_date=10:00:00 end_date=虚拟的最大值
end_date=10:01:00
10:01:00 数据修改 时间为Ur_UpdateTime=10:01:00 start_date=10:00:0修改第一条数据的结束时间end_date=虚拟的最大值 end_date=10:02:00
10:02:00 数据修改 时间为Ur_UpdateTime=10:02:00 start_date=10:00:0修改第二条数据的结束时间end_date=虚拟的最大值
剩下的以此类推
时间拉链较数据冗余较高,但是可以存数据变化历史,方法好实现
第二中就是写触发器
如果数据量不是过百万还是可以提倡的用用触发器获得新值:NEW.字段 insert 到一张临时表.临时表存的就是宿主文件发生变化的值.
或者建一个日志表,给每次更新加一个批次,日志表里记录时间
这个没有问题, 10:02:00 你还有可能 rollback 呢。