如何将表中新加入的记录处理后再写入到本表中

WuBill 2009-08-11 11:33:25
oracle10G,表RealData,字段 ID, DT(时间),v0,v1,v2,v3....
ID和DT合为主键,定时有数据进入表中
现在如何定时将ID为1000的新记录的v0,v1,v2,...处理后(比如都放大2倍)写成ID为2000的新记录
...全文
109 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
行舟 2009-08-15
  • 打赏
  • 举报
回复
物化视图不需要你修改程序,不会影响你的sql
zhangwonderful 2009-08-14
  • 打赏
  • 举报
回复
可以写一个储存过程,然后创建job定时调用此储存过程。最新一条记录的时间存到辅助表中,每次调用存储过程时读取此辅助表中的最后一次更新时间,ok
xugh 2009-08-14
  • 打赏
  • 举报
回复
不能写包吗?
小灰狼W 2009-08-14
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 wubill 的回复:]
引用 9 楼 wildwave 的回复:
要定时处理吗
可以通过job来实现
ID是可以重复的?那么你需要添加一个字段,比如更新时间
否则没法辨认哪些是新增加的数据

我的表中有时间字段DT,且一定是递增的,在job里能不能把上次运行时最新一条记录的时间存到变量中,下次运行是拿出来放到where语句中
[/Quote]

不好意思,前面有两条是发错地方了
这个可以实现
比如10分钟更新一次,那么条件用
where dt>sysdate-1/24/6
WuBill 2009-08-14
  • 打赏
  • 举报
回复
还有没有支招的
WuBill 2009-08-13
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 zxf_feng 的回复:]
可以用物化视图来实现,你的这个功能
[/Quote]
创建视图的话,我的程序就要改动了,要把访问RealData表的地方都切换到视图上
我就是不想改程序,才想在数据库上做手脚
阿三 2009-08-13
  • 打赏
  • 举报
回复
可以用物化视图来实现,你的这个功能
WuBill 2009-08-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wildwave 的回复:]
要定时处理吗
可以通过job来实现
ID是可以重复的?那么你需要添加一个字段,比如更新时间
否则没法辨认哪些是新增加的数据
[/Quote]
我的表中有时间字段DT,且一定是递增的,在job里能不能把上次运行时最新一条记录的时间存到变量中,下次运行是拿出来放到where语句中
小灰狼W 2009-08-13
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wildwave 的回复:]
update a1 set costom4id=null;
alter table a1 modify costom4id varchar2(20);
alter table a1 rename column costom4id to costom4label;
[/Quote]
最后一个不能用..
没法改名
小灰狼W 2009-08-13
  • 打赏
  • 举报
回复
update a1 set costom4id=null;
alter table a1 modify costom4id varchar2(20);
alter table a1 rename column costom4id to costom4label;
小灰狼W 2009-08-13
  • 打赏
  • 举报
回复
要定时处理吗
可以通过job来实现
ID是可以重复的?那么你需要添加一个字段,比如更新时间
否则没法辨认哪些是新增加的数据
WuBill 2009-08-13
  • 打赏
  • 举报
回复
怎么没人支招了
WuBill 2009-08-12
  • 打赏
  • 举报
回复
而且还要考虑,每次只处理新加入的数据
WuBill 2009-08-12
  • 打赏
  • 举报
回复
先谢谢各位的回复
表中的数据是实时增加的,我是想请教,如何弄,才能让“insert into readdata select id*2, xxxx, xxxx where id = 1000”自动执行
ojuju10 2009-08-12
  • 打赏
  • 举报
回复
用insert
insert into tabname
select * from tablename
majy 2009-08-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wubill 的回复:]
引用 1 楼 majy 的回复:
定时修改主键,听起来感觉不是很好的一个解决方案。更新语句如下:

update realdata set id = id * 2 where id = 1000


哥哥,id = 1000的记录同样也是需要的
[/Quote]

insert into readdata select id*2, xxxx, xxxx where id = 1000
WuBill 2009-08-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 majy 的回复:]
定时修改主键,听起来感觉不是很好的一个解决方案。更新语句如下:

update realdata set id = id * 2 where id = 1000
[/Quote]

哥哥,id = 1000的记录同样也是需要的
csuxp2008 2009-08-12
  • 打赏
  • 举报
回复
触发器能不能实现,先进行处理(都乘以2),然后再插入到基表中
majy 2009-08-12
  • 打赏
  • 举报
回复
定时修改主键,听起来感觉不是很好的一个解决方案。更新语句如下:

update realdata set id = id * 2 where id = 1000

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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