Oracle Form之Trigger解读

本文详细介绍了Oracle Form中的各种触发器,如PRE-、WHEN-NEW-...-INSTANCE、POST-...系列,以及它们的触发时机和用途。讨论了在验证代码中WHEN-VALIDATE-RECORD与PRE-INSERT的区别,解释了POST-QUERY和WHEN-NEW-RECORD-INSTANCE的关系,并探讨了不可见item的验证。同时,文章还提到了接受触发器、错误处理和特定功能触发器的用法,对理解和优化Oracle Form的逻辑处理非常有帮助。
摘要由CSDN通过智能技术生成

打开,关闭,创建,更新记录的trigger次序
PRE-……
在进入一个form,或是导航到一个新的block时触发,PRE-……系列的触发器一般是在WHEN-NEW-……-INSTANCE系列之前,它们如果失败了的话,就不能成功导航到下一个对象了,只能留在当前的位置。在这些触发器里可以设置一些判断条件来限制是否可以导航到新的位置。

WHEN-NEW-……-INSTANCE
这一类的trigger都是当鼠标光标每次落到一个新的block,record,item上时触发的,而且就算失败了,也不会发生什么错误。但是when-new-form-instance,只有当form启动时,光标导航到第一个导航块的第一个导航item时触发,如果一个应用有多个form,当光标在各个form之间转换时,并不会触发它。


POST-TEXT-ITEM和WHEN-VALIDATE-ITEM
Post-text-item的触发点:当输入的光标从一个Text-Item 转到其它item,可以用它来改变item的值,而when-Validate-item虽然也是在离开前触发,但是作用不同,Post-Text-Item本身是没有验证的,when-Validate-item可以用来补充一些验证(除了form本身的验证),但是当form验证成功以后,会把item标志为‘valid’,而不会再去验证了,如果这时我们再去修改它的值,那么就有可能会把无效的值导入到数据库。在创建和更新一条记录时,先触发when-Validate-item,再触发Post-Text-Item,然后是when-Validate-record。
POST-……系列的都是离开当前的block,record,item时触发的

WHEN-WINDOW-ACTIVATED
做原材料属性修改平台时,第一次使用这个触发器,用来从另一个window返回时,刷新当前window,代码写在了这个触发器里。使用之前用fnd_message.debug试验了一下,打开窗口后不停的弹出message。只要这个窗口在活动期间就会不停的执行这个触发起里面的代码,所以执行的代码应该用if条件限制一下。

Form的Trigger的优先级是从item,到block,到form级别,如果另外设置Execution Hierarch属性(override,before,after),则按照设置后的顺序执行。如果是override的话,则执行完这个级别的触发器,就不往上执行了,before就是执行完这个级别的触发器后,如果上一个级别也有这个触发器的话,继续去执行,after就是先去执行上一个级别的触发器,然后再回来执行。感觉触发器比较难理解的还是每一种触发器触发的时间,和在开发中怎么使用。目前了解的就是pre-…,when-new-…-instance,when-…-validate,post-query和几个on-…触发器

 

验证代码写在WHEN-VALIDATE-RECORD和PRE-INSERT的不同
验证代码写在WHEN-VALIDATE-RECORD和PRE-INSERT的不同
1、写在WHEN-VALIDATE-RECORD,可以及时地提示错误信息,如果验证时要和后台数据库关联的话,那么要写在PRE-INSERT,因为PRE-INSERT,ON-INSERT都是一条一条记录执行的,这样批量录入时,每一条记录的验证都可以取到最新的数据库记录。
2、 批量录入时,有一条的PRE-INSERT不成功,则所有记录都不能保存成功

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值