WEB开发网
开发学院数据库Oracle 开发篇之 Oracle触发器心得体会 阅读

开发篇之 Oracle触发器心得体会

 2007-05-17 12:31:09 来源:WEB开发网   
核心提示: 用Execute_query执行查询的时候,会把Copy Value From Item里面的那个Item的值自动作为查询条件,开发篇之 Oracle触发器心得体会(2),当创建记录的时候也会直接用该值初始化,而且不改变记录的状态,问题是如果主块的是新记录(未保存),在子块的when-cr

用Execute_query执行查询的时候,会把Copy Value From Item里面的那个Item的值自动作为查询条件。当创建记录的时候也会直接用该值初始化,而且不改变记录的状态。在更新记录的时候不知道会不会Copy过来尚未验证。Get_Item_property的时候用ENFORCE_KEY属性,但不能Set。该属性在Master-detail设置的时候自动创建,删除的时候自动删除。如果不希望Copy Value From Item影响查询结果,可以在Pre-Query里面把Item的值设为null。

app_query.reset('block_name');如果第一次调用,会把当前的DEFAULT_WHERE,然后什么都不做,以后再来调用的时候则会把第一次设置的DEFAULT_WHERE用set_block_property('SAA_HEADERS',DEFAULT_WHERE,...)设置回来,具体请参考app_core库。

When-create-record的时候给Item赋值不改变记录状态。Sequence,如果我们在Item的Initial Value里面赋值,那么假如用户Focus To新记录,又回到老记录,如此反复,Sequence会不断变大的。

SQL Order BY的时候null值排在最后,这个一般不符合实际要求,可以这样解决ORDER BY nvl(Geography_Code,chr(0))解决。

Trigger顺序1:

pre-commit
块1的pre-insert,on-insert,post-insert
块2的pre-insert,on-insert,post-insert
...
post-forms-commit

Trigger顺序2:

when-list-changed在前,Validation item在后,因为Validation item是在要离开这个item的时候才促发的。

Trigger顺序3:

pre-form/when-create-record/pre-block/
when-new-forms-instance/when-validate-record/on-insert/post-forms

当定位到主块的一个记录,会促发子块的when-clear-record事件和when-create-record事件,问题是如果主块的是新记录(未保存),在子块的when-create-record里面取主块的任何东西,居然是主块的上一次获得焦点的记录的东西;连用取块的当前记录也是上一次获得焦点的记录。

上一页  1 2 3 4  下一页

Tags:开发 Oracle 触发器

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接