读表中的数据。谢谢,在线等!

wanghuil 2004-08-11 08:19:34
现有一表A,该表中记录数不断增加,每天清空一次,表中记录没有流水号、序号等字段,要将表中数据读出,方法是:每隔几分钟读一次表,要求只读新增的没有读过的记录,读过的就不再访问,对表只有读的权限,不可以写及做任何其他动作。

我本来利用了表中的rowid来判断记录是否读过,被读过的记录的rowid被记下为value,再再一次读记录时选择读rowid>value的记录。可是在运行一段时间后发现有时value值是当前表中没有的,而且大于表中所有记录的rowid。

请问这是为什么?我怎么解决这样的问题?

...全文
146 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
armyyd 2004-08-14
  • 打赏
  • 举报
回复
楼上的方法最实用
甚至不用在库中建表,只用通过关键字的差值比较就可以了。
把已读取的关键字在程序中保存下来,作为中间变量。
kingjie 2004-08-13
  • 打赏
  • 举报
回复
如果是每天清空一次,可以这样做:你先要在数据库中建立一张结构和你要读取数据那张表一样的表,假若新表为表C,原来的表为表A。当你每天第一次读取时,就将读取的记录插到表C中,再次读取时,将表A的记录与表C的记录用差运算,读取最新的记录,同时将差运算的结果插入到表C,采用这种方式就可以每次读最新的数据。你可以写成存储过程和触发器。执行的效率与你表中的数据量有关。
192168001001 2004-08-12
  • 打赏
  • 举报
回复
靠,你这表总得有个主键吧
wanghuil 2004-08-12
  • 打赏
  • 举报
回复
怎么说呢,这个系统的应用和数据库都是一个涉及生产的,很重要的应用,不可以更改任何东西。我要做的东西是一个关于该系统的外围东西,所有问题都只能依靠自己解决。

请大家一定要多帮帮我啊!
hevin 2004-08-12
  • 打赏
  • 举报
回复
不光是表结构不可以改变,而且也不可能通过其他的新建表等额外的操作来协助完成
============================================================================
为何不在数据库外,应用程序内解决?
qiaozhiwei 2004-08-12
  • 打赏
  • 举报
回复
rownum是伪列,是oracle加在表中的一条记录的序号,可是用rownum,不能精确定位到一条记录啊,还是要考虑一下
wanghuil 2004-08-11
  • 打赏
  • 举报
回复
谢谢各位。
不光是表结构不可以改变,而且也不可能通过其他的新建表等额外的操作来协助完成。怎么办呢?
192168001001 2004-08-11
  • 打赏
  • 举报
回复
每天清空一次, 当然不能用rowid
怎么办得看看表结构
dinya2003 2004-08-11
  • 打赏
  • 举报
回复
因为要删除数据,rowid的物理位置可能被新的数据重用.,出现你的情况,建议是不是考虑增加一标志字段,根据时间段来插入标志值/
wylwyl1130 2004-08-11
  • 打赏
  • 举报
回复
另外在建一张表,含有你的表的主健和sysdate
写一个触发器,将增加到原来表中的纪录的主健和sysdate插入到新表中
查询的时候根据这两个表进行查询
drabit 2004-08-11
  • 打赏
  • 举报
回复
升级到oracle 10g才能解决你的问题
10g可以直接用sql找出某个时间范围内表中新增加的行
wanghuil 2004-08-11
  • 打赏
  • 举报
回复
需要重新申明一下,表结构是不容许做任何改动的。表中数据只会每天清空一次,清空前数据记录会增加。修改,不会删除任何记录。
jxc 2004-08-11
  • 打赏
  • 举报
回复
建议在表中增加字段, 用默认sysdate的方式记录插入时间,读取的时候可以根据该字段判断是否需要重复读取.
jxc 2004-08-11
  • 打赏
  • 举报
回复
rowid 可能会被重用.
比如一条记录被删除后,它的rowid就被释放了,再插入时又被分配了.
smallcrocodile 2004-08-11
  • 打赏
  • 举报
回复
先想一想
wanghuil 2004-08-11
  • 打赏
  • 举报
回复
各位大侠。帮帮忙啊!
wanghuil 2004-08-11
  • 打赏
  • 举报
回复
请问楼上rownum是什么东东?能介绍详细些吗?
majy 2004-08-11
  • 打赏
  • 举报
回复
用rownum来解决试试

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧