Oracle plsql批处理被窗体屏幕阻止

Oracle plsql批处理被窗体屏幕阻止,oracle,plsql,oracleforms,Oracle,Plsql,Oracleforms,我有一个Oracle Forms 6i应用程序,还有一个plsql批处理,两者都在对同一个表进行更新。在Forms应用程序的表单中,有一些字段直接映射到表列。每当访问表的表单打开时,plsql批处理就会被阻止。如何创建表单,使其不会阻止任何其他db会话。是否有方法加载/创建表单实例,使其不持有表上的任何锁 您可以尝试以下两种可能性之一: 1) 对于块,有属性“锁定模式”,其中一个值为“延迟”。帮助中的文本: Form Builder仅在将事务发布到数据库时锁定行,而不是在最终用户编辑记录时锁定行

我有一个Oracle Forms 6i应用程序,还有一个plsql批处理,两者都在对同一个表进行更新。在Forms应用程序的表单中,有一些字段直接映射到表列。每当访问表的表单打开时,plsql批处理就会被阻止。如何创建表单,使其不会阻止任何其他db会话。是否有方法加载/创建表单实例,使其不持有表上的任何锁

您可以尝试以下两种可能性之一:

1) 对于块,有属性“锁定模式”,其中一个值为“延迟”。帮助中的文本:

Form Builder仅在将事务发布到数据库时锁定行,而不是在最终用户编辑记录时锁定行。如果用户导致提交操作时块中字段的值已更改,则Form Builder将阻止处理提交操作

所以,若设置了这个值,那个么DB记录只会在更新时被锁定

2) 使用“执行层次结构”属性-“覆盖”(这是默认值)为此块创建ON-LOCK触发器。在触发器输入代码中:

NULL;

在这种情况下,表单不会锁定记录,只有在必要时(在发出UPDATE语句之后,直到处理COMMIT或ROLLBACK之前),DB才会锁定记录。

您可以尝试以下两种可能性之一:

1) 对于块,有属性“锁定模式”,其中一个值为“延迟”。帮助中的文本:

Form Builder仅在将事务发布到数据库时锁定行,而不是在最终用户编辑记录时锁定行。如果用户导致提交操作时块中字段的值已更改,则Form Builder将阻止处理提交操作

所以,若设置了这个值,那个么DB记录只会在更新时被锁定

2) 使用“执行层次结构”属性-“覆盖”(这是默认值)为此块创建ON-LOCK触发器。在触发器输入代码中:

NULL;

在这种情况下,表单不会锁定记录,只有在必要时(在发出UPDATE语句之后,直到处理COMMIT或ROLLBACK之前),DB才会锁定记录。

表单仅在用户或触发器更改数据库绑定项时锁定记录

您可能有一些WHEN-NEW-RECORD-INSTANCE或POST-CHANGE触发器,用于更改数据库绑定项的值。 在处理锁定模式之前,您应该先看看是什么导致窗体请求行锁定。我打赌你会感到惊讶的


首先尝试在块和项级别禁用所有WHEN&POST触发器,并检查表单是否仍然锁定批处理。之后,先启用触发器,直到发现导致问题的触发器。

只有当用户或触发器更改数据库绑定项时,表单才会锁定记录

您可能有一些WHEN-NEW-RECORD-INSTANCE或POST-CHANGE触发器,用于更改数据库绑定项的值。 在处理锁定模式之前,您应该先看看是什么导致窗体请求行锁定。我打赌你会感到惊讶的


首先尝试在块和项级别禁用所有WHEN&POST触发器,并检查表单是否仍然锁定批处理。之后,首先启用触发器,直到发现导致问题的触发器。

是否将
锁定模式
属性设置为
延迟
?是否将
锁定模式
属性设置为
延迟