Chinaunix首页 | 论坛 | 博客
  • 博客访问: 470012
  • 博文数量: 711
  • 博客积分: 3000
  • 博客等级: 中校
  • 技术积分: 4200
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-28 14:18
文章分类

全部博文(711)

文章存档

2011年(1)

2008年(710)

我的朋友

分类:

2008-10-29 11:54:28


  本范例试图解决以下问题:
  假如有一个主从块. 
  主块中存放总数量, 
  从块中多条记录存主块中的数量,即把主块中的数量分放到从块中, 
  当从块中的数量大于主块中总数量时,则提示有误,不让保存.
  
  本来有人提议,使用key-commit trigger,判断以上是否符合,才决定是否执行commit。不过,后来发现key-commit至少在以上情况,是没有控制到的: 
  1。当没存盘,按退出按钮时,会提示是否存盘。如果回答存盘,它的存盘运行不经过key-commit. 
  2.  当没存盘,按查询时(先按F7),会提示是否存盘,此时若存盘,也不受key-commit控制。 
  
  最后讨论后确定,以 pre-commit trigger 作为合法性检查。如果不符合要求,使用raise  form_trigger_failure 阻止commit的执行。
  
  
  建表语句为:
  create table test_main(main_code varchar2(12),main_line number,main_qty number);
  insert into test_main values('1000',1,12);
  insert into test_main values('1000',2,22);
  commit;
  alter table test_main add  primary key (main_code,main_line);
  create table test_detail(det_code varchar2(12),det_line number,det_qty number);
  insert into test_detail values('1000',1,6);
  insert into test_detail values('1000',2,3);
  insert into test_detail values('1000',2,11);
  insert into test_detail values('1000',2,2);
  commit;
  
  运行结果为:
  
  说明:上面的为主数据块,下面的为从数据块。
  主数据块 (MAIN_CODE,MAIN_LINE) 是关健字。上图为点击主数据块的第二条记录记录时,从数据块立即显示相应的详细记录:一共有三条详细数据,数量汇总是:16, 它小于22,此时允许存盘。如果汇总结果大于22,存盘时会提示:error.
  
  
【责编:admin】

--------------------next---------------------

阅读(217) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~