12
返回列表 发新帖
楼主: CitaLin

[SQL] 【大话IT】对oracle数据库的插入表进行更新到另一张表(涉及到其他表和存储过程)

[复制链接]
论坛徽章:
3
优秀写手
日期:2015-03-01 06:00:14慢羊羊
日期:2015-03-04 14:55:272015年新春福章
日期:2015-03-06 11:59:47
 楼主| 发表于 2015-3-2 16:44 | 显示全部楼层
oracle_cj 发表于 2015-3-2 15:49
你搞个job去监控那张表的数据,一有数据就调存储过程,没有数据就死循环监控,可能会用到dbms_lock包,这样 ...

是个好办法,可以说说,具体怎么实现,或举个实际的例子。多谢了

使用道具 举报

回复
论坛徽章:
3
优秀写手
日期:2015-03-01 06:00:14慢羊羊
日期:2015-03-04 14:55:272015年新春福章
日期:2015-03-06 11:59:47
 楼主| 发表于 2015-3-2 16:47 | 显示全部楼层
qq350165593 发表于 2015-3-2 16:26
是否可以从设计的角度进行修改?
按照LZ的需求,我猜想是不是用应用在实时查询B表的数据,如果是话是否可以 ...

B表是一张报表

使用道具 举报

回复
论坛徽章:
737
季节之章:春
日期:2015-07-31 17:16:29ITPUB季度 技术新星
日期:2014-07-17 14:37:00季节之章:秋
日期:2015-07-31 17:16:14季节之章:夏
日期:2015-07-31 17:16:29股神
日期:2014-10-15 09:23:31衰神
日期:2014-10-20 22:47:12季节之章:冬
日期:2015-07-31 17:16:14红钻
日期:2014-12-16 17:51:41洛杉矶湖人
日期:2016-09-23 08:18:15布鲁克林篮网
日期:2016-09-23 08:17:18
发表于 2015-3-2 16:57 | 显示全部楼层
WHILE 1=1 LOOP
  SELECT COUNT(1) INTO v_count FROM a;
  IF  v_count >0 THEN
    CALL sp;
    TRUNCATE TABLE a;
  ELSE
      dbms_lock.sleep(10);--10指的是10s,具体时间你自己定
  END IF;
END LOOP;
或者
直接建一个job来跑下面的语句
SELECT COUNT(1) INTO v_count FROM a;
  IF  v_count >0 THEN
    CALL sp;
    TRUNCATE TABLE a;
    END IF;

使用道具 举报

回复
论坛徽章:
737
季节之章:春
日期:2015-07-31 17:16:29ITPUB季度 技术新星
日期:2014-07-17 14:37:00季节之章:秋
日期:2015-07-31 17:16:14季节之章:夏
日期:2015-07-31 17:16:29股神
日期:2014-10-15 09:23:31衰神
日期:2014-10-20 22:47:12季节之章:冬
日期:2015-07-31 17:16:14红钻
日期:2014-12-16 17:51:41洛杉矶湖人
日期:2016-09-23 08:18:15布鲁克林篮网
日期:2016-09-23 08:17:18
发表于 2015-3-2 17:02 | 显示全部楼层
你这玩意这么久了还没整好啊。。。

使用道具 举报

回复
论坛徽章:
3
优秀写手
日期:2015-03-01 06:00:14慢羊羊
日期:2015-03-04 14:55:272015年新春福章
日期:2015-03-06 11:59:47
 楼主| 发表于 2015-3-3 09:02 | 显示全部楼层
oracle_cj 发表于 2015-3-2 16:57
WHILE 1=1 LOOP
  SELECT COUNT(1) INTO v_count FROM a;
  IF  v_count >0 THEN

使用道具 举报

回复
论坛徽章:
21
2014年世界杯参赛球队: 英格兰
日期:2014-06-13 15:55:46秀才
日期:2015-12-14 15:09:38秀才
日期:2015-12-18 09:28:57秀才
日期:2015-12-21 09:48:11秀才
日期:2016-01-21 13:42:39秀才
日期:2016-01-25 14:55:31秀才
日期:2016-02-18 09:24:18秀才
日期:2016-02-18 09:24:30秀才
日期:2016-02-18 10:08:14秀才
日期:2015-12-14 15:02:13
发表于 2015-3-10 11:06 | 显示全部楼层
尽量少用触发器,因为会影响到系统的性能。如果A表有时间对应的字段,可以采用存储过程定期对相应时间的数据进行更新,存储过程由JOB来高度,这样可以提高系统的性能,或者可以从业务的角度来解决,插入A表后,把B表对应的数据组装好再插入到B表中。

使用道具 举报

回复
论坛徽章:
1
优秀写手
日期:2014-09-26 06:00:14
发表于 2015-3-18 11:45 | 显示全部楼层
用job,如果用触发器在处理大批量数据时很容易把表给锁了

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表